C/C++에서 매크로와 비슷한 것을 만들 수있는 간단한 클래스를 만들려고합니다. 기본적으로 나는과 같이, 객체의 목록 불구하고 몇 가지 작업을 수행해야 할 때 다음과 같은 코드를 호출 할 수 있도록하려면 : 나는 꽤 자바 프로그래밍하지 않은Java의 일반 추상 클래스
new IteratableList{
void action() {
// do something
}
}.perform();
을, 내가 할 수있는 내가 마지막 방법 있음을 입력 할 때까지
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);
}
내 코드가 오류를 얻을하지 않습니다 나는 추상적 인 액션 메소드를 추가하려고하면 'T는 내 코드에 어떤 문제가 있는지 파악. 메서드 헤더에서 abstract를 제거하라는 오류가 발생하고이를 변경하면 다른 오류 목록이 표시됩니다. 나는 근본적인 것을 여기에서 놓친 것처럼 느낀다. 아무도 눈부신 오류가 있습니까?
왜 내가 downvoted 되었습니까? 명확히 할 설명이 훨씬 도움이 될 것입니다. –
Jeroen - 개인적인 추상 방법을 사용할 수 없기 때문에. (정의상) 서브 클래스가 그것을 덮어 쓰기 위해서는'protected' 또는'public' 또는'package'가 필요합니다. 나는이 줄'private abstract void action (T obj);'에 반대했다. –
@ElliottFrisch : 바로 아래에 있습니다. 나는 처음에는 접근 자보다 잘못된 일반 할당에 집중했다. 나는 그것을 오해를 막기 위해 편집 할 것입니다. –