Je travaille sur l'examen Java OCP, et je suis tombé sur cette questionavec les génériques génériques Compiler
Vu le code suivant:
Transaction t1 = new Transaction<>(1, 2); //1
Transaction t2 = new Transaction<>(1, "2"); //2
Il est nécessaire que // 1 doit compiler et// 2 ne doit pas compiler. Laquelle des déclarations suivantes de la transaction Transaction satisfera la demande?
La réponse est celle-ci:
public class Transaction<T, S extends T> {
public Transaction(T t, S s) {
}
}
Ce que je comprends. Mais quand je mets ce code dans un projet Eclipse, ça marche! Voici mon code:
class TransactionD<T, S extends T> {
public TransactionD(T t, S s){
System.out.println("D: t: " + t.getClass() + " s: " + s.getClass());
}
}
public class Test1
{
public static void main(String[] args) {
TransactionD d1 = new TransactionD<>(1, 2); //1
TransactionD d2 = new TransactionD<>(1, "2"); //2
}
}
Ma sortie est la suivante:
D: t: Classe java.lang.Integer s: classe java.lang.Integer
D: t: java class. lang.Integer s: class java.lang.String
Ma question est la suivante: qu'est-ce qui me manque?
Quelle est la version de Java que votre livre ou test de simulation vise? "OCP" semble Java5/6-ish. – Mena
essayez d'envoyer 'new Integer (1)," 2 "' à votre constructeur 'TransactionD' – CraigR8806
@Mena c'est 7 ou 8 (je suis en fait un professeur travaillant avec des étudiants qui utilisent soit 7 ou 8, donc je ne suis pas quelle est la version dans laquelle se trouve cet étudiant) – Shoikana