Java 如何应用diff类的泛型和访问方法?

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");

我有这两门课

第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
    }

}

您必须使用界面

@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
    }
}