如何在Java中获取类型参数

时间:2018-06-13 16:00:19

标签: 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.
    }
}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

如果你想要做的就是确保你的通用符合正确,这根本就没有必要。

不是检查AbstractDAO内部的类型,而是需要AbstractDAOIHasDate的约束,尽管这很笨拙。这意味着扩展IHasDate试图使用它的任何实体将无法编译。

abstract class AbstractDAO<T extends AbstractEntity<ID> & IHasDate, ID extends Serializable> {
    public void test(){

    }
}

如果您创建一个绑定到IHasDate的不同DAO,使用上述内容可以实现类似的目标。

abstract class IHasDateDao<T extends AbstractEntity<ID> & IHasDate, ID extends Serializable> extends AbstractDAO<T, ID> {
}

答案 1 :(得分:-3)

您可以使用方法实例
if(yourObject instanceof yourClass){ ... }