Comment renvoyer une instance d'un objet du même type que la classe transmise avec Java 6?
Je veux retourner une instance d'un objet de même type de la Classe de l'objet passé en. Le type transmise peut être n'importe QUOI. Est-il un moyen de le faire avec les Génériques?
De clarifier -- je ne veux pas l'appelant de la méthode pour ne pas avoir à jeter à la Classe de l'objet passé en
Par exemple,
public Object<Class> getObject(Class class)
{
//Construct an instance of an object of type Class
return object;
}
//I want this:
MyClass myObj = getObject(MyClass.class);
//Not this (casting):
MyClass myObj = (MyClass)getObject(MyClass.class);
source d'informationauteur BestPractices
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous voulez créer une nouvelle instance de cette classe. Ce ne serait pas possible à l'aide de médicaments génériques (vous ne pouvez pas appeler
new T()
) et serait également assez limité l'utilisation de la réflexion.La réflexion approche pourrait être:
Notez que cela ne fonctionne que si la classe dispose d'un constructeur sans argument.
Cependant, la question serait pourquoi vous avez besoin au lieu de simplement appeler
new WhatEverClassYouHave()
.Exemple D'Utilisation:
Si vous n'êtes pas en train de faire quelque chose de compliqué avec l'objet lors de la création, quel est le problème avec juste l'aide d'un bon vieux constructeurs?
Vous devriez être en mesure d'utiliser quelque chose de similaire à:
Vous n'avez pas à mettre en œuvre cette méthode, il est déjà là:
http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#newInstance%28%29
Utilisation:
Permettra de créer un nouvel objet de la classe spécifiée. Vous n'avez pas à utiliser des génériques pour cela.