![](/img/trans.png)
[英]In Java, how to let child class decide of which type parameter class use as overridden method argument?
[英]Decide how to execute a method based on the type of the input argument in Java
我有以下方法来查找与allVectors
的输入向量v
类似的向量(double列表)并返回它们的索引(int列表):
public List returnSimilar(List v,List<List<Double>> allVectors);
现在,如果v
是List<Double>
我希望该方法执行某组语句(A语句)并返回List<Integer>
。 如果v
是List<List<Double>>
我希望该方法执行另一组语句(B语句)并返回List<List<Integer>>
。
如何才能做到这一点?
使您的方法通用:
public <T> List<Integer> returnSimilar(List<T> v, List<List<T>> allVectors);
如果你真的需要实现与T
不同的逻辑 - 引入重载方法。
public <T> List<Integer> returnSimilar(List<T> v, List<List<T>> allVectors) {
List<Integer> result = new ArrayList<>();
for(int i = 0; i < allVectors.size(); i++) {
if (allVectors.get(i).isSimilar(v)) {
result.add(i);
}
return result;
}
public <T> boolean isSimilar(List<T> a, List<T> b) {
if (a.size() != b.size()) return false;
for (int i = 0; i < a.size(); i++) {
if (!a.get(i).equals(b.get(i))) {
return false;
}
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.