gpt4 book ai didi

Java:摆脱复制粘贴静态方法的使用

转载 作者:行者123 更新时间:2023-11-30 03:30:42 32 4
gpt4 key购买 nike

我有一个代码引起了我的注意。我怎样才能简化它?

abstract class A {}

class B extends A { //generated by Velocity
static public Iterator<B> iterator() {...}
}

class C extends A { //generated by Velocity
static public Iterator<C> iterator() {...}
}

及用法:

for (Iterator<B> i = B.iterator(); i.hasNext();) {
sout(i.next().toString());
}
for (Iterator<C> i = C.iterator(); i.hasNext();) {
sout(i.next().toString());
}

有没有办法让我创建一些方法,该方法将采用扩展 A 的类来迭代它?最好不要更改类生成逻辑。

最佳答案

所以首先你可以重新定义你的 A 类并在其中添加迭代器

abstract class A<T extends A> {
public Iterator<T> iterator() {...}
}

如果需要,请将此方法抽象化;

然后你需要更改类的定义 class B extends A<B>class C extends A<C>

另一件事,而不是将代码复制到使用迭代器的位置,您可以将其包装到方法中

public   <T extends A<?>> void itterate(Iterator<T> itr) {
for (Iterator<T> i = itr; i.hasNext();) {
sout(i.next().toString());
}
}

然后你调用它

itterate(b.iterator());
itterate(c.iterator());

关于Java:摆脱复制粘贴静态方法的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29119761/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com