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)
通用类型在编译后被擦除.所以这两种doAnything()方法具有相同的签名:
doAnything(Object object)
Run Code Online (Sandbox Code Playgroud)
因为S并且T没有明确地从更具体的类型派生.
要解决此问题:要么将方法名称更改为具有两个不同的名称,要么从特定类型派生S并T派生,例如:
public class GenericFail<S extends CharSequence, T extends Number> {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
459 次 |
| 最近记录: |