2016-03-31 18 views
7

Secondo the Java documentation:generici Java convenzioni di denominazione

I nomi dei parametri tipo più comunemente usati sono:

E - Elemento (ampiamente utilizzato dal framework Java Collections)

K - Key

N - Numero

T - Tipo

V - Valore

S, U, V, ecc - 2 °, 3 °, 4 tipi

codici Tuttavia, ho visto come questo

public <R> Observable<R> compose(Transformer<? super T, ? extends R> transformer) { 
     return ((Transformer<T, R>) transformer).call(this); 
    } 

Qui si sta usando R, da quale fonte posso scoprire che cosa significa R qui dentro?

risposta

8

"Risultato" o "Tipo di reso". Il primo è particolarmente comune nelle classi JDK 8.

Considerate i JavaDocs per java.util.function.Function, per esempio:

R - il tipo del risultato della funzione

I modelli <R> e , ?R> non compaiono nelle classi OpenJDK 7 di (citazione : I downloaded the source e ho fatto un grep), ma appaiono in diverse classi per la creazione della toolchain Java stessa, come javac. Lì, a volte R sembra stand for "result" e sometimes for "return type."

+0

Grazie per quello, questa definizione esiste solo nelle interfacce funzionali Java8 o in altre versioni di Java? – WenChao

+0

@WenChao Aggiornato la mia risposta con un po 'di Java 7. – yshavit

+0

grazie per lo sforzo! Secondo il link che hai postato, sembra essere un'altra convenzione di denominazione utilizzata che non è ben documentata. Spero davvero che ci sia una chiara spiegazione su come e quando utilizzare questi nomi piuttosto che esaminare i codici sorgente java. – WenChao

1

È molto semplice. Qui R sta per "tipo di ritorno".

Se si osserva "modello di progettazione dell'adattatore" che converte un tipo in un altro tipo per lavorare con due interfacce completamente diverse. Lì puoi trovare tali valori generici.

Se si sta scrivendo questo metodo che trasforma o chiama oggetto di tipo T e restituisce oggetto osservabile di un altro tipo, cosa si utilizzerà per tipo di valore restituito? Non esiste una regola semplice e veloce per la denominazione dei tipi generici. L'unica regola qui applicabile è che dovrebbe essere breve e significativo.

+0

Grazie per il chiarimento, ma dove posso trovare la documentazione a riguardo? – WenChao

Problemi correlati