creo un metodo generico, senza parametri, qualche cosa come:metodo generico senza parametro
private <T> TableCell<T> createTableCell(){
return new TableCell<T>();
}
Così, nel mio programma, come chiamare questo metodo per un tipo concreto?
creo un metodo generico, senza parametri, qualche cosa come:metodo generico senza parametro
private <T> TableCell<T> createTableCell(){
return new TableCell<T>();
}
Così, nel mio programma, come chiamare questo metodo per un tipo concreto?
Di solito, il tipo è dedotto, ma è possibile specificare il tipo con la seguente sintassi:
Nota: Hai un errore nella definizione del metodo - non aveva alcun tipo di ritorno:
private <T> TableCell<T> createTableCell(){
return new TableCell<T>();
}
Ecco come si può chiamare:
TableCell<SomeType> tableCell = myObject.<SomeType>createTableCell();
Se il metodo non accede tutti i campi, considerare la possibilità di un meth static
od, che si potrebbe chiamare come:
TableCell<SomeType> tableCell = MyClass.<SomeType>createTableCell();
Per inciso, quando si utilizza questa sintassi, molti si sorprenderanno della tua "eliteness" - è una sintassi non è spesso visto.
sì, hai ragione. Questo è un mio errore. Ad ogni modo, il metodo generico è in una classe non generica, e voglio che l'altro metodo di questa classe chiami questa classe generica, non il metodo di un'altra classe. – Thinhbk
Sì. Ho anche inviato per prima la risposta corretta. (L'altra risposta è stata modificata dopo che il mio è stato pubblicato - penso che abbia copiato il mio). nm. – Bohemian
Grazie per la tua spiegazione, mi aiuta a capire meglio, poiché la sintassi nella definizione del metodo generico di classe vs generico mi rende confuso. – Thinhbk
Chiamate questo metodo nello stesso modo in cui avete chiamato il costruttore al suo interno: createTableCell<TypeName>()
.
sfortunatamente non funziona. – Thinhbk
Hmm, in tal caso dovresti estendere la firma del metodo per includere un suggerimento sul tipo. Il solito modo per farlo se non si ha davvero nulla di rilevante da passare nel metodo è un parametro 'Classe
Perché il tipo non si può dedurre dal contesto (quando si chiama il metodo) è necessario specificare che quando si chiama in modo folowing:
obj.<MyType>createTableCell()
dove obj
è l'oggetto di una classe/tipo quello contiene quel metodo.
In realtà la sintassi è 'obj.
@missingfaktor si. Grazie. In realtà stavo provando nel frattempo perché ho sempre dimenticato la sintassi in quel caso ... eri più veloce di me –
@missingfaktor: hai ragione. Molte grazie. – Thinhbk
una volta chiamato questo metodo, restituirà il TableCell di Tipo T cioè T detiene il tipo della classe –
Intendevi "return" invece di "Return"? –
Generalmente, quando chiamo questo metodo, restituirà TableCell