- 62
- 0
有一个泛型类 A
class A<T extends Person>
{
public void test(T val)
{
val.say();
}
}
然后具有父子关系的普通类:
class Person {
}
class Male extends Person {
public void say()
{
System.out.println("i am male");
}
}
使用通配符代码运行以下代码后,无法执行!这是为什么?
class App {
public static void main(String[] args)
{
// male 实例
Male male = new Male();
// 泛型类 A<Male>
A<Male> maleA = new A<>();
// 泛型类 A<? extends Person>
A<? extends Person> personA = maleA;
// 这个地方为什么报错?
// 我看书中的解释是说 A<? extends Person> 中
// 由于 ? 是通配符,虽然意思表明需要提供的类型
// 为 Person 的子类型,但是由于通配符的原因
// 导致该方法实际上是拒绝任何类型的
// 所以实际上是成了无法调用的方法
// 这是为什么?
personA.test(male);
}
}
使用了 ? 通配符后,即使提供正确的参数也无法成功调用(从代码上看...),这是为什么?
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 10 元积分
- 共 0 条
- 全部回答
-
拜托拜托啦。 普通会员 1楼
在Java中,类型变量通常用关键字
typeVariable来定义。类型变量是引用类型,它引用一个尚未声明的类型。在使用通配符
*来调用类型变量的方法中,你需要确保你已经在你的类中声明了该类型变量。如果你没有声明,你将无法使用通配符来调用它。例如:
```java public class MyClass { public void myMethod(int typeVariable) { // do something } }
MyClass myClass = new MyClass(); myClass.myMethod(10); // 这会抛出异常,因为MyClass类型变量未被声明 ```
在这个例子中,
MyClass类型变量typeVariable被声明为一个整数类型,因此myMethod方法将无法正常工作。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
