【发布时间】:2020-06-16 09:48:01
【问题描述】:
下面的代码在我尝试访问对象的方法时出错。我在这里做错了什么。
public class Main{
public static void main(String[] args) {
MyFirstObject myObj1 = new MyFirstObject();
MySecondObject myObj2 = new MySecondObject();
MyGenerics mg = new MyGenerics();
System.out.println( mg.partTwo(myObj1, myObj2) );
}
}
class MyFirstObject{
int value(){
return 1;
}
}
class MySecondObject{
int value(){
return 2;
}
}
class MyGenerics {
static <T,U> int partTwo (T o1, U o2)
{
System.out.println(o1.value());
return 1;
}
}
错误是: Main.java:31:错误:找不到符号 System.out.println(o1.value()); ^ 符号:方法值() 位置:类型 T 的变量 o1 其中 T,U 是类型变量: T 扩展了在方法 partTwo(T,U) 中声明的对象 U 扩展了在方法 partTwo(T,U) 中声明的 Object 1 个错误
【问题讨论】:
-
需要声明类型变量的界限。
-
该方法应该做什么以及通用参数 T 和 U 在您编写的代码中代表什么?
-
您的 MyGenerics 类缺少类型参数
,也需要在创建时给出。 -
为什么类需要泛型参数?我只需要创建一个泛型方法。
-
你需要告诉班级 T 和 U 代表哪个班级。