我有一个方法foo
void foo (String x) { ... }
void foo (Integer x) { ... }
我想从一个不关心参数的方法中调用它:
void bar (Iterable i) {
...
for (Object x : i) foo(x); // this is the only time i is used
...
}
上面的代码抱怨foo(Object)
没有定义,当我添加
void foo (Object x) { throw new Exception; }
然后bar(Iterable<String>)
调用它而不是foo(String)
抛出异常。
如何避免 和 有两个文本相同的bar(Iterable<String>)
定义bar(Iterable<Integer>)
?
我以为我可以摆脱类似的事情
<T> void bar (Iterable<T> i) {
...
for (T x : i) foo(x); // this is the only time i is used
...
}
但后来我得到cannot find foo(T)
错误。