Java中的泛型方法

Java中的泛型方法,java,generics,Java,Generics,我有更多的.NET背景,所以我一直很难想出Java中需要的通用方法。基本上,我有一个基类,称它为AbstractBase,我的域对象从中继承(称它们为ClassA和ClassB)。我想编写一个方法,用给定的ID返回特定类型的AbstractBase public T getById(长id),其中T:AbstractBase { if(T为A类) //查找并返回ClassA类型的对象 else if(T为B类) //查找并返回ClassB类型的对象 其他的 返回null; } 我不认为我的头脑

我有更多的.NET背景,所以我一直很难想出Java中需要的通用方法。基本上,我有一个基类,称它为
AbstractBase
,我的域对象从中继承(称它们为
ClassA
ClassB
)。我想编写一个方法,用给定的ID返回特定类型的
AbstractBase

public T getById(长id),其中T:AbstractBase
{
if(T为A类)
//查找并返回ClassA类型的对象
else if(T为B类)
//查找并返回ClassB类型的对象
其他的
返回null;
}
我不认为我的头脑完全像Java做泛型一样。这样的事情可能与Java有关吗?最好的方法是什么?

public T getById(长id,类typeKey){
public <T extends AbstractBase> T getById(long id, Class<T> typeKey) {
    if (ClassA.class.isAssignableFrom(typeKey)) {
        // ...
    } else if (ClassB.class.isAssignableFrom(typeKey)) {
        // ...
    } else {
        // ...
    }
}
if(ClassA.class.isAssignableFrom(typeKey)){ // ... }else if(ClassB.class.isAssignableFrom(typeKey)){ // ... }否则{ // ... } }
或者,如果您希望类完全匹配(而不是潜在的子类类型):

public T getById(长id,类typeKey){
if(typeKey==ClassA.class){
// ...
}else if(typeKey==ClassB.class){
// ...
}否则{
// ...
}
}

噢,你这个可怜的C#灵魂。键入擦除--准备哭泣。@KirkWoll:+1我完全同意。:'(泛型代码的全部要点是它是“泛型”的,即不依赖于类型Yep,这是我一直在寻找的。谢谢,Chris!很快就会接受答案。。。
public <T extends AbstractBase> T getById(long id, Class<T> typeKey) {
    if (ClassA.class.isAssignableFrom(typeKey)) {
        // ...
    } else if (ClassB.class.isAssignableFrom(typeKey)) {
        // ...
    } else {
        // ...
    }
}
public <T extends AbstractBase> T getById(long id, Class<T> typeKey) {
    if (typeKey == ClassA.class) {
        // ...
    } else if (typeKey == ClassB.class) {
        // ...
    } else {
        // ...
    }
}