【问题标题】:Parameterized Upper Bounded Generic Class from String?来自字符串的参数化上限泛型类?
【发布时间】:2016-02-03 07:41:39
【问题描述】:

我看过这两个答案:

我真正想做的是:

    final Class<? extends Xyz<?>> clazz = Class.forName(name).asSubclass(Xyz<?>.class);

Xyz&lt;?&gt;.class 不是有效的 Java。有没有我应该使用的魔法咒语?

【问题讨论】:

    标签: java generics parameterization


    【解决方案1】:

    我不太确定我是否理解您的问题。

    如果您的意思是您的代码行没有编译,您可以通过强制转换来修复它,如下例所示:

    package test;
    
    public class Test<T> {
    
        public static void main(String[] args) throws ClassNotFoundException {
            @SuppressWarnings("unchecked")
            final Class<? extends Test<?>> clazz = (Class<Test<?>>) Class.forName("test.Test").asSubclass(Test.class);
            //... do something with the class
        }
    
    }
    

    如何避免“未经检查”-cast 的警告,例如,您可以在此处阅读: How do I address unchecked cast warnings?

    【讨论】:

    • 抱歉,我真的想问有没有办法避免演员阵容?
    【解决方案2】:

    Class&lt;? extends Xyz&lt;?&gt;&gt; 仅在 Xyz 本身是泛型类型时才有意义。

    【讨论】:

    • Xyz 确实是一个泛型参数化类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    相关资源
    最近更新 更多