Java中两个泛型的方法

use*_*714 0 java generics polymorphism

我有一个问题,并想问你们为什么这些代码不起作用,如何在不删除泛型或方法的情况下使其工作.我认为这是因为该方法不能重载,因为S和T可以是同一类型,是否正确?但我仍然不知道如何让它发挥作用.谢谢!

public class GenericFail<S,T> {
    public void doAnything(S sValue){
        System.out.println("Doing anything with S");
    }

    public void doAnything(T sValue){
        System.out.println("Doing anything with T");
    }
}
Run Code Online (Sandbox Code Playgroud)

dav*_*xxx 5

通用类型在编译后被擦除.所以这两种doAnything()方法具有相同的签名:

doAnything(Object object)
Run Code Online (Sandbox Code Playgroud)

因为S并且T没有明确地从更具体的类型派生.

要解决此问题:要么将方法名称更改为具有两个不同的名称,要么从特定类型派生ST派生,例如:

public class GenericFail<S extends CharSequence, T extends Number> {
Run Code Online (Sandbox Code Playgroud)