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

时间:2015-08-11 17:05:17

标签: 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");
    }
}

如何在类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

1 个答案:

答案 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
    }
}