Java 如何用更具体的类型参数重载泛型函数?

Java 如何用更具体的类型参数重载泛型函数?,java,generics,overloading,Java,Generics,Overloading,假设我有一个泛型类 公共类A{} 然后,A用B和C实例化,C从另一个类D扩展: 公共类B{} 公共类C扩展了D{} A b=新的A(); A c=新的A(); 我想做的是创建一个方法,它接受a作为参数。但是,我计划重载该函数,以便可以对类型参数从D扩展而来的实例进行不同的处理 公共类X{ 公众静态虚空乐趣(A){} 公众静态虚空乐趣(A) 第二个func似乎也绑定到Object 这是不正确的 由于类型擦除,泛型被删除,因此它们都成为: publicstaticvoidfun(A){ 公众静态

假设我有一个泛型类

公共类A{}
然后,A用B和C实例化,C从另一个类D扩展:

公共类B{}
公共类C扩展了D{}
A b=新的A();
A c=新的A();
我想做的是创建一个方法,它接受
a
作为参数。但是,我计划重载该函数,以便可以对类型参数从D扩展而来的实例进行不同的处理

公共类X{
公众静态虚空乐趣(A){}
公众静态虚空乐趣(A)
第二个
func
似乎也绑定到
Object

这是不正确的

由于类型擦除,泛型被删除,因此它们都成为:

publicstaticvoidfun(A){
公众静态虚空乐趣(A){}

解决方案:不要使用重载,请使用不同的方法名称。

我认为这取决于您要实现的具体目标。您是否有两个以上的函数?其中一个函数应该是一个“全面覆盖”函数?在最后一种情况下,您可以在“全面覆盖”函数中使用switch语句。您好,您是说第二个“有趣的”
函数吗没有被调用?您好@kks21199,由于相同的擦除,代码无法编译。您好@ManuelRenePaulsToews,谢谢您的建议!我可能需要编辑我的问题以使其更清楚。是的,我正在尝试实现这两个目标:多个特定方法,以及未处理类的一个“一网打尽”方法。但是,我仍然不清楚问题的答案您建议的switch语句。您建议在类中使用switch语句吗?在类中使用switch语句似乎不是很干净。