【发布时间】:2017-10-05 04:15:01
【问题描述】:
public class Demo {
public String work(String s) {
return s;
}
public <T> T Test(T t) {
// common work to do !!
// .....
// spec work to do
T result = work(t);
return result;
}
}
Test() 首先要做一些共同的工作,然后是针对不同类型的 T 的具体工作。 上面的代码导致编译器错误,我该怎么做? 非常感谢!
【问题讨论】:
-
你不能在 Java 中做这样的事情。关于选择哪个方法的重载的决定是在编译时做出的,而不是在运行时。
-
如何实现? Test()需要处理不同的param类型,在这个函数中需要先做一些常用的工作,我只是想把常用的部分提取到Test()中。
-
将公共部分拉到一个单独的方法中,并有多个测试重载调用该单独的方法,然后做专门的工作。
-
这确实有效。但不是优雅的风格。它需要将许多接口 [Test()] 导出到调用者...。 c++可以轻松做到这一点,我认为java也可以做到这一点