pav*_*163 1 java generics methods interface
我的界面中有这个方法:
public String getValue();
Run Code Online (Sandbox Code Playgroud)
字符串只是这里的例子,我不想返回一个字符串.
我希望将该方法放在将返回int,chars或bools的类中(取决于类).例如,我有一个实现我的界面的Animal类,并且有这个方法.我希望它在动物中调用此方法时返回一个int.我有另一个具有此方法的类人员,并且当在Person上调用此方法时,我希望它返回一个char.
public class Animal implements myInterface {
@Override
public int getValue() {
return 5;
}
}
public class Person implements myInterface {
@Override
public char getValue() {
return 'c';
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我必须用泛型来做这件事.但我究竟该怎么做呢?
如果我在接口中使用泛型类型替换String,例如:
public <T> T getValue();
Run Code Online (Sandbox Code Playgroud)
然后它说我不能从int(或char)转换为T.
我该怎么办?谢谢.
正确的方法是使用通用接口:
public interface MyInterface<T> {
public T getValue();
}
public class Animal implements MyInterface<Integer> {
@Override
public Integer getValue() {
return 5;
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这真的像一个X/Y问题; 更不用说它是非常低效的,装箱和拆箱所有这些原语.
你想要实现什么目标?你的目标是什么?