Obtenir le type de nom de la classe Java génériques
J'ai suivantes de la classe, je dois obtenir le type de constructeur, comment puis-je le faire?
public abstract class MyClass<T> {
public MyClass()
{
//I need T type here ...
}
}
EDIT:
Voici l'exemple concret de ce que je veux réaliser:
public abstract class Dao<T> {
public void save(GoogleAppEngineEntity entity)
{
//save entity to datastore here
}
public GoogleAppEngineEntity getEntityById(Long id)
{
//return entity of class T, how can I do that ??
}
}
Ce que je veux faire, c'est d'avoir cette classe étendu à tous les autres DAOs, parce que d'autres DAOs ont certaines requêtes qui sont spécifiques à ceux daos et ne peut pas être générale, mais ces requêtes simples, devrait être généralement disponible à toutes les interfaces DAO/implémentations...
Dépend de ce que vous voulez faire avec elle. Voulez-vous instanciez un T? Vous souhaitez faire appel à une autre fonction avec un T?
J'ai dao que tous les autres daos étendre, de sorte que cette extension de dao de base de l'opération qui peut être la même pour tous les daos, donc j'ai besoin de savoir la classe où a entraîné des objets doit être mappé
Je ne suis pas sûr de comprendre, mais puisque vous avez T, vous pouvez "carte" dans les diverses autres méthodes dans votre DAO, par exemple, T doSomething(T obj)
Vous avez besoin pour développer et fournir des exemples concrets de ce que vous essayez d'accomplir. Ce que vous voulez faire n'est généralement pas possible en raison de l'effacement, et a une très mauvaise conception de l'odorat.
J'ai mis à jour le post et a donné des exemples concrets ...
J'ai dao que tous les autres daos étendre, de sorte que cette extension de dao de base de l'opération qui peut être la même pour tous les daos, donc j'ai besoin de savoir la classe où a entraîné des objets doit être mappé
Je ne suis pas sûr de comprendre, mais puisque vous avez T, vous pouvez "carte" dans les diverses autres méthodes dans votre DAO, par exemple, T doSomething(T obj)
Vous avez besoin pour développer et fournir des exemples concrets de ce que vous essayez d'accomplir. Ce que vous voulez faire n'est généralement pas possible en raison de l'effacement, et a une très mauvaise conception de l'odorat.
J'ai mis à jour le post et a donné des exemples concrets ...
OriginalL'auteur newbie | 2010-06-03
Vous devez vous connecter pour publier un commentaire.
Nous avons fait ce
Et dans les sous-classes,
OriginalL'auteur taer
Vous pouvez l'obtenir, à un certain degré... ne sais pas si c'est utile:
new ConcreteMyClass<String>()
, oùpublic class ConcreteMyClass<T> extends MyClass<T>
vous serait tout simplement obtenir "T", car le type n'est pas réifiée.Dao<T s'étend GoogleAppEngineEntity> pourrait faire l'affaire.
OriginalL'auteur dplass
Et vous ne peut pas simplement ajouter un paramètre dans le constructeur?
OriginalL'auteur user268396
Si je ne suis pas la lecture de ce mal, ne serait pas vous voulez juste
et
pour vos signatures de méthode?
OriginalL'auteur Powerlord