java class类型参数_java – 如何从通用类型参数获取`.class`属性?

this question的接受答案描述了如何在通用< T>中创建T的实例。类。这涉及传递类< T>参数传递给Generic构造函数,并从中调用newInstance方法。

通用< Bar>的新实例然后创建,并传递参数Bar.class。

如果新通用类的泛型类型参数不是一些已知的类,如Bar,但它本身是一个通用类型参数,你该怎么办?假设我有一些其他类Skeet< J>并且我想创建一个Generic< J>的新实例。从那个类里面。然后,如果我尝试传入J.class我得到以下编译器错误:

cannot select from a type variable.

有没有办法解决?

对我来说触发错误的代码的具体位是:

public class InputField

extends InputFieldArray

{

public InputField(String labelText)

{

super(new String[] {labelText}, W.class);

}

/* ... */

}

public class InputFieldArray

extends JPanel

{

/* ... */

public InputFieldArray(String[] labelText, Class clazz)

throws InstantiationException, IllegalAccessException

{

/* ... */

for (int i = 0 ; i < labelText.length ; i++) {

newLabel = new JLabel(labelText[i]);

newWidget = clazz.newInstance();

/* ... */

}

/* ... */

}

/* ... */

}

发生错误,因为我不能写W.class。有没有其他方法传递相同的信息?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值