繁体   English   中英

Java中的通用方法

[英]Generic methods in Java

我更多地具有.NET背景,因此在想出Java中所需的通用方法时遇到了一些麻烦。 基本上,我有一个基类,称为AbstractBase ,我的域对象从该基类继承而来(称为ClassAClassB )。 我想编写一个返回给定ID的特定类型AbstractBase的方法。 这是我可能在C#中执行的方法:

public T getById<T>(long id) where T : AbstractBase
{
    if (T is ClassA)
        // find and return object of type ClassA
    else if (T is ClassB)
        // find and return object of type ClassB
    else
        return null;
}

我不认为我会全神贯注于Java执行泛型的方式。 Java可能会发生这种情况吗? 最好的方法是什么?

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 {
        // ...
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM