Java 如何应用diff类的泛型和访问方法?
我有这两门课 第1类:Java 如何应用diff类的泛型和访问方法?,java,Java,我有这两门课 第1类: public class MyClass1 { public void myClass1Print() { System.out.println("in myClass1Print"); } } 第2类: public class MyClass2 { public void myClass1Print() { System.out.println("in myClass1Print");
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
}
}
您必须使用界面
@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
}
}
如果你有编译错误,你也应该发布。你对泛型的工作原理有误解。编译器无法在
methodMyClass3
中知道exp
和act
属于MyClassXyz
类型。考虑使用泛型界限。
@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
}
}