Java 在泛型类型内使用方法

Java 在泛型类型内使用方法,java,generics,generic-function,Java,Generics,Generic Function,以这一类为例: 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 <

以这一类为例:

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();
    }
}
公共B类{
公共无效调用_this(){
A=新的A();
方法b(A);
}
公共作废法(T m){
m、 方法a();
}
}
我在
m.method_a()
上遇到错误“找不到符号”。
这个方法可能吗?或者有类似的等价物吗?

对于泛型,您可以设置一些限制

interface HasMethodA {
    void method_a();
}

...

class ... {

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

}
接口方法a{
无效方法_a();
}
...
类。。。{
…(…,T has methoda…){
...
hasMethodA.method_a();
...
}
}
请参见将您的方法定义为

    public <T extends A> void method_b(T m){
        m.method_a();
    }
public void方法_b(tm){
m、 方法a();
}

如果您总是将类型为
A
的实例传递给
method\u b
为什么它必须是泛型的?它可以是
method_b(am)
;此外,您对
A类
A类
的命名约定非常混乱。请详细说明您打算如何使用此功能。您想调用
B。调用this()
并让它在
a
的某个不存在的实例上调用
方法\u a()
?“为什么?”纳布斯特说,这是有史以来最糟糕的建议。如果您只是想绕过类型安全性并强制转换所有内容,那么为什么还要麻烦使用泛型呢?您也可以将参数定义为
对象
。实际上,我简化了代码,只显示了我的操作方式。我使用JPA存储库获取数据并执行类似任务,所以我只想使用一个函数,但使用不同的存储库实例@user7@ElliottFrisch我在最后的评论中描述了这一点。