gpt4 book ai didi

java - Java 中的通用抽象类

转载 作者:行者123 更新时间:2023-11-29 06:36:12 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的小类,我可以在其中创建类似于 C/C++ 中的宏的内容。基本上,当我需要通过对象列表执行一些操作时,我希望能够调用以下代码,如下所示:

new IteratableList{
void action() {
// do something
}
}.perform();

我已经有一段时间没有用 Java 编程了,当我尝试添加抽象操作方法时,我无法弄清楚我的代码有什么问题:

import java.util.List;
import java.util.Iterator;

public abstract class IteratableList<T> {
public void perfrom(List<T> ls) {
Iterator<T> l = ls.iterator();
while (l.hasNext())
action(l.next());
}

private abstract void action(<T> obj);
}

在我输入最后一个方法之前,我的代码不会出现任何错误。我收到错误消息,告诉我从方法 header 中删除摘要,当我更改它时,我得到了其他错误的列表。我觉得我在这里错过了一个基本的东西。有没有人看到明显的错误?

最佳答案

private abstract void action(<T> obj);

应该是

protected abstract void action(T obj);

当你有一个泛型方法时,你必须在方法签名中这样定义它:

protected abstract <T> void action(T obj);

除非(这里就是这种情况)通用参数是在类级别定义的。

您还应该删除 private 修饰符并使其成为 protectedabstract 表示该方法必须被覆盖,但是 private 表示子类不能访问它。 protectedprivate 的可访问性扩展到子类。

关于java - Java 中的通用抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206373/

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