我有这两个类
第1课:
public class MyClass1
{
public void myClass1Print()
{
System.out.println("in myClass1Print");
}
}
第2课:
public class MyClass2
{
public void myClass1Print()
{
System.out.println("in myClass1Print");
}
}
如何在类3中创建泛型方法,以便该方法将参数作为通用参数。
第3课:
public class MyClass3
{
public static void main(String[] args)
{
MyClass3 obj3 = new MyClass3();
MyClass1 obj1 = new MyClass1();
MyClass2 obj2 = new MyClass2();
obj3.methodMyClass3(obj1, obj2);
}
public <T> void methodMyClass3(T exp,T act)
{
System.out.println("obj1===>>>"+exp.myClass1Print());// compilation error
System.out.println("obj2===>>>"+act.myClass2Print());// compilation error
}
}
因为参数exp和act不被视为MyClass1,MyCLass2的对象 因此Compilatin错误是
The method myClass1Print() is undefined for the type T
The method myClass2Print() is undefined for the type T
答案 0 :(得分:1)
您必须使用界面
@FunctionalInterface
public interface GenenericPrint {
void myClassPrint();
}
public class MyClass1 implements GenenericPrint {
@Override
public void myClassPrint(){
System.out.println("print something from Class1");
}
}
public class MyClass2 implements GenenericPrint {
@Override
public void myClassPrint(){
System.out.println("print something from Class2");
}
}
public class MyClass3{
public static void main(String[] args){
MyClass3 obj3 = new MyClass3();
GenenericPrint obj1 = new MyClass1();
GenenericPrint obj2 = new MyClass2();
obj3.methodMyClass3(obj1, obj2);
}
public void methodMyClass3(GenenericPrint exp,GenenericPrint act){
System.out.println("obj1===>>>"+exp.myClassPrint());// no compilation error
System.out.println("obj2===>>>"+act.myClassPrint());// no compilation error
}
}