我有一个实体如下:
public class Test extends AbstractEntity<Long> implements IHasDate { ... }
它是如下的 DAO:
public class TestDAO extends AbstractDAO<Test, Long> { ... }
在 AbstractDAO
中,我想测试传递的类型参数 Test 是否是 IHasDate 的实例。
这是 AbstractDAO
的定义:
public abstract class AbstractDAO<T extends AbstractEntity<ID>, ID extends Serializable> {
public void test(){
// Here I want to test if the passed type parameter is an instance of IHasDate.
}
}
我该如何解决这个问题?
最佳答案
如果您只想确保正确绑定(bind)您的泛型,那么这根本就没有必要。
无需检查 AbstractDAO
内部的类型,您需要将 AbstractDAO
绑定(bind)到 IHasDate
,尽管这很笨拙。这意味着任何不扩展 IHasDate
的实体试图使用它都将无法编译。
abstract class AbstractDAO<T extends AbstractEntity<ID> & IHasDate, ID extends Serializable> {
public void test(){
}
}
如果您创建绑定(bind)到 IHasDate
的不同 DAO,则使用上面的方法可以实现类似的目标。
abstract class IHasDateDao<T extends AbstractEntity<ID> & IHasDate, ID extends Serializable> extends AbstractDAO<T, ID> {
}
关于java - 如何在Java中获取类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50841606/