代码之家  ›  专栏  ›  技术社区  ›  pingw33n

Java递归泛型类通配符匹配

  •  0
  • pingw33n  · 技术社区  · 15 年前

    具有以下通用接口和类:

    interface TestIntf<T extends TestIntf<T>> 
    {
        void test(T param);
    }
    
    class TestImpl<T extends TestIntf<T>> implements TestIntf<T> 
    {
        @Override
        public void test(T param) { System.out.println(param); }
    }
    

    Class<? extends TestIntf<?>> clz = TestImpl.class;
    

    Class<TestImpl> Class<? extends TestIntf<?>> )

    TestImpl 要匹配的类 ?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Bozho    15 年前

    你不能。使用不安全的石膏。

    Class<? extends TestIntf<?>> clz = (Class<? extends TestIntf<?>>) TestImpl.class;
    

    或者不要使用内部泛型:

    Class<? extends TestIntf> clz = TestImpl.class;
    

    更新: 当涉及到注释时,您无能为力—必须更改注释。不能让类文本表示泛型类型。