我有一些具有通用类型interface DummyInterface<T>的接口,并且我必须设置接口的类

 class DummyClass<T>{
        public void setDummyInterface(DummyInterface<T> dummyInterface){
            //set interface
        }
    }


想象一下我在DummyClass中使用不同的泛型存储ArrayList的情况。当我从列表中获取类时,我不知道类的泛型,并且我想检查接口是否具有相同的泛型;
例如我想这样检查

if(dummyInterface<SomeTypeIKnow>.getGenericType() == dummyClass.getGenericType()){
      dummyClass.setDummyInterface(dummyInterface);
}

最佳答案

您可以使用类似TypeTools之类的方法来解析类型参数,只要该参数在类型定义中被捕获即可。例如:

interface DummyStringInterface extends DummyInterface<String> {}

Class<?> t = TypeResolver.resolveRawArgument(DummyInterface.class, DummyStringInterface.class);
assert t == String.class;

关于java - 如何检查具有通用类的接口(interface)是否适合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28906730/

10-12 02:15