0

考虑这个类:

public class A {
   public void method_a(){
       System.out.println("THIS IS IT");
 }
}

我想在另一个使用泛型类型的函数中使用“method_a”来获取 A 类。例如:

public class B {
    public void calling_this(){
        A = new A();
        method_b(A);
    }
    public <T> void method_b(T m){
        m.method_a();
    }
}

我收到错误“找不到符号” m.method_a()。这种方法是否可行,或者是否有任何类似的方法?

4

2 回答 2

3

使用泛型,您可以设置一些限制

interface HasMethodA {
    void method_a();
}

...

class ... {

    <T extends HasMethodA> ... (..., T hasMethodA, ...) {
        ...
        hasMethodA.method_a();
        ...
    }

}

请参阅有界类型参数

于 2019-09-28T06:31:48.953 回答
3

将您的方法定义为

    public <T extends A> void method_b(T m){
        m.method_a();
    }

Java 泛型什么时候需要 <? 扩展 T> 而不是 <T> 并且切换有什么缺点吗?

于 2019-09-28T06:37:26.503 回答