Problema Java

angel_j88
Ciao a tutti, scusate il disturbo. Non riesco a dare un senso ad una riga di codice Java. Ovvero vorrei capire il significato della riga seguente:

List all = query(agende).esegui();

in quanto per la sintassi sembrerebbe che query(agende) sia un metodo che ritorna un oggetto che ha al suo interno il metodo esegui(), solo che se query(agende) fosse un metodo non dovrebbe essere chiamato scrivendo nomeoggetto.metodo()? Vi è un modo per chiamare un metodo senza indicare l'oggetto o la classe? Se no allora come va interpretata la riga precedente? Grazie a tutti per l'aiuto, ciaoooo.

Risposte
apatriarca
Ci forniresti qualche informazione su dove hai trovato quell'esempio? A partire da quella riga mi viene difficile dirti qualcosa di certo.

angel_j88
Sto realizzando un generatore di codice, dovrei generare del codice che mi deve permettere di scrivere quella riga scritta prima.

Ho solo quell'esempio e devo dargli un significato, non capisco come rappresentare query, come detto prima se è un metodo dovrebbe essere chiamato scrivendo (oggetto o classe).metodo(), se è un classe non posso scrivere quella riga.

So soltanto che query non è istanziata. Grazie per la pazienza.

apatriarca
Se il metodo è della stessa istanza o classe del metodo all'interno del quale si trova quella riga allora non sarebbe necessario inserire la parte iniziale della tua notazione. E' l'unica idea che mi viene al momento. Per cui potrebbe ad esempio essere equivalente a
List<Agenda> all = this.query<Agenda>(agende).esegui();

angel_j88
No, dopo aver generato il codice devo poter scrivere:

List all = query(agende).esegui();

E dato che genero classi e metodi in modo che un utente possa utilizzarli, questa riga dovrebbe essere utilizzata in una qualsiasi altra classe.

apatriarca
Ma che significa che devi generare quella riga di codice?! Così com'è, da sola, non ha senso. Ci forniresti maggiori informazioni?

angel_j88
Non ho detto che devo generare quella riga di codice, ho detto che dopo aver generato del codice che crea classi e metodi, l'utente deve poter scrivere List all = query(agende).esegui();

A questo punto chiedevo, a me sembra che query(agende) sia un metodo che ritorna un oggetto che ha al suo interno esegui(), se è così come è possibile che io utilizzi quel metodo senza rispettare la sintassi oggetto.metodo?
agende rappresenta un insieme di oggetti agenda, quindi sia Agenda che agende sono due classi.
Ma data quella sintassi query che cosa è?
Le mie specifiche sono solo queste, so che non si capisce tanto infatti il problema è proprio questo.

apatriarca
Io credo che quell'espressione abbia senso solo se query è un metodo della classe (potrebbe essere ereditato da una qualche classe base però). Non mi vengono in mente altre possibilità.

angel_j88
Ok ti ringrazio, qualora dovessi trovare una soluzione la posterò. Avrei un'altra domanda, anzichè aprire un'altra discussione chiedo qui: è possibile definire un vettore in Java i cui elementi sono tipi semplici ma anche chiamate a metodi? Per esempio:

[]array={"uno","due", nome(), "tre"}

Grazie per la diponibilità, ciao.

hamming_burst
"angel_j88":
è possibile definire un vettore in Java i cui elementi sono tipi semplici ma anche chiamate a metodi? Per esempio:

[]array={"uno","due", nome(), "tre"}

un vettore ha le stesse caratteristiche di altri linguaggi, cioè un insieme di elementi tipizzati uguali.
Quello che dici te è la definizione astratta di una classe (un oggetto). Una cosa che puoi fare è creare un array di identificatori di una classe che ha quel metodo e un tipo semplice.

class Bla{

type blabla
void metodo(){}

}
----
Bla[] array = new Bla[...]


così facendo puoi accedere a tale metodo con tipo:
array[2].metodo()

angel_j88
Ragazzi qualcuno sa dirmi come posso scrivere una classe anonima che mi permetta di scrivere :

List elementi = query(i).run();

io finora ho scritto questa :

static IQuery query(int l){
return new IQuery()
{
@Override
public List run() {
// TODO Auto-generated method stub
return null;
}
};
}

Ma così facendo posso scrivere :

List elementi = query(i).run(); levando il generics su query. Qualcuno sa come posso modificare la classe nascosta in modo tale da utilizzare la sintassi :

List elementi = query(i).run();

Ciao e grazie.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.