所以,这是我之前提出的一个跟进问题。我写了以下代码:
import java.util.List;
import java.util.Iterator;
public abstract class IterableList<T> {
public void perfrom(List<T> ls) {
Iterator<T> l = ls.iterator();
while (l.hasNext())
action(l.next());
}
protected abstract void action(T obj);
}
这是创建一个模板(在C中像一个宏一样排序),所以我可以实现action方法并遍历列表中的很多东西。我在使用内联代码时遇到问题(我认为这就是单词?),但我无法弄清楚如何使用泛型来编写它。为了举例说明我要做的事情,我基本上想要做到以下几点:
new IterableList<String>{
void action(String s) {
// do something
}
}.perform(myListOfStrings);
但我真的没有运气,而且我没有得到任何有用的错误。我有点不熟悉Java中的熟悉区域,我还没有用语言编程很长一段时间。
到目前为止,我得到的错误(在eclipse中)是“令牌上的语法错误,错位的构造”和“void是变量操作的无效类型”。据我所知,这些并不是真正有用的。
答案 0 :(得分:2)
你的语法有点不对。
List<String> myListOfStrings = ...// some List
new IterableList<String>() { // missing ()
public void action(String s) {
// do something
}
}.perfrom(myListOfStrings);
请注意,您无法降低方法的可见性。 action
在父类中声明为public
,因此子类中的action()
必须至少为public
。此外,perform
拼写错误。
上述内容相当于
public class AnonymousClass extends IterableList<String> {
public void action(String s) {
// do something
}
}
...
new AnonymousClass().perfrom(myListOfStrings);