我想创建一个方法,有不同的行为,基于输入类型.基本上是方法重载.
我在另一个泛型类中使用该方法.方法重载将回退到泛型的基础上.在这种情况下,有没有办法让它使用最终的泛型类String
,而不是退回到Object
类型.
有没有比方法重载更好的模式,根据泛型的最终类型拥有不同的行为?
class GenericOverwrite {
public static void foo(String bar){
System.out.println("string");
}
public static void foo(Object bar){
System.out.println("object");
}
}
class Foo <T extends Object> {
public void basedOnGeneric(T bar){
GenericOverwrite.foo(bar);
}
}
class Test{
void test(){
var a = new Foo<String>();
a.basedOnGeneric("I wish this could print string, but uses the object overloaded method");
var b = new Foo<Object>();
b.basedOnGeneric("This should print object");
}
}