java - JAVA泛型构造函数问题
问题描述
我现在正在研究 JAVA 泛型并发现一些奇怪的情况。
class A{
public void mInA(){
System.out.println("mInA");
}
}
interface I{
public void mInInterfaceI();
}
class B extends A implements I{
public void mInInterfaceI(){
System.out.println("mInterfaceI");
}
}
class MyList <TP1, TP2>{
MyList(TP1 data1){
this.data1 = data1;
}
TP1 data1;
TP2 data2;
MyList<TP1, TP2> next;
}
public class GenericPrepare {
public static void main(String[] args){
B obj = new B();
MyList<A,B> anchor = new MyList<>(obj);//Curious
anchor.data2 = new B();
anchor.next = null;
}
}
我的构造函数旨在将 TP1 作为输入。所以我必须在上面的注释中输入“A”类型引用作为参数。
但是当我输入“B”类型引用作为参数时,JAVA 并没有抱怨它。
我不知道这里发生了什么。
解决方案
MyList<A,B> 构造函数需要一个 A 对象作为参数,但是因为 B 扩展了 A,所以 B 实际上可以分配给 A -> 您的代码可以工作。
推荐阅读
- arrays - 角度循环遍历对象数组
- javascript - 抛出错误:Describe 不是函数。运行 Mocha 测试时出现此错误
- java - Java 编译器中是否有一个全局设置来禁用 String.formatted() 的弃用?
- php - 在函数php中启动类对象?
- python - plt.scatter(): ValueError 因为'c'参数
- angular - 将来自 ngx-translate 管道的翻译存储到变量中
- modelica - 如何查看modelica中solveOneNonlinearEquation函数的迭代次数?
- ios - Alamofire:十进制类型值响应的问题
- javascript - Puppeteer - 删除由exposeFunction 公开的函数?
- facebook - 如何在脸书上制作广告