java - 如何在Java中获取类型参数

标签 java

我有一个实体如下:

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/

相关文章:

java - map 信息 + Java : A way to decrypt coordinates in a DAT file?

java - 不能使用 try/catch block 处理 java 未经检查的异常吗?

java - 如何修复 Android 中 fragment 中未找到 View 的问题

java - 为什么我说的话不低于8个字符?

java - java中两个不同类如何调用同一个方法

java - 如何将二进制字符串值转换为十进制

java - 如何在Java中记录纯文本? SimpleFormatter 还可以写入 XML

java - 如何改进Java中合并两个排序链表的代码

java - 如何将输出写入文本文件,与 show() 函数显示的输出相同

java - 如何保持 TCP 套接字打开?