java 泛型不确定类_Java泛型编译错误 – 类型中的方法方法(Class)不适用于参数

上周四有人在工作时向我展示了一个编译错误,我无法以干净的方式修复它,从那以后它一直困扰着我.

问题是泛型相关,我重新构建了生成编译错误的简化版本的代码.错误发生在下面显示的最后一行代码中.

我一直在寻找各种各样的互联网,但似乎找不到一个合适的解释为什么Java编译器不接受代码.我想如果它允许代码,那么可能会在Bar.operationOnBar()中创建一个类转换问题,但我不知道如何.

有人可以请教我为什么不编译?

public interface Interface {

}

public class Type implements Interface {

}

public class Bar {

public Bar(Class clazz) {

}

public void operationOnBar(Class arg){

}

}

public class Foo {

public Bar bar(Class clazz){

return new Bar(clazz);

}

public static void main(String[] args) {

Class extends Interface> extendsInterfaceClazz = Type.class;

new Foo().bar(extendsInterfaceClazz).operationOnBar(Type.class);

}

}

在Foo.main()的第二行编译错误:

The method operationOnBar(Class) in the type Bar is not applicable for the arguments (Class)

顺便说一句.我通过向下转换Type.class来解决它,这样编译器就无法看到Class的泛型类型是“Type”而不是“?extends Interface”.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值