2017-01-06 3 views
2

JList을 확장하는 기능을 내 클래스 CustomList에 추가하려고합니다. 이제 CustomList의 현재 사용법은 오버라이드되지 않은 메서드 setModel(Listmodel<E> lm)JList에서 호출합니다. Java, Java 1.6의 이전 버전에 붙어있어서 지우기 문제로 인해이 메서드를 직접 무시할 수 없습니다. 모든 연구 결과에 따르면이 메서드의 이름을 바꾸고 현재의 모든 용도를 새로 명명 된 메서드로 바꾸어야한다는 결론을 얻었습니다.내 로컬 프로젝트에서 Java API의 메소드를 사용되지 않는 것으로 선언하는 방법은 무엇입니까?

대신이 메서드를 호출해야하는 CustomList으로 작업하는 다른 사람들에게 경고하고 싶습니다. 내 프로젝트의 원시 메소드를 로컬에서 사용하지 않는 방법을 알지 못합니다. 나의 새로운 방법을 요약

간단한 예는 다음과 같습니다 :

public class CustomList<E> extends JList { 
    private ArrayList list; 
    public void newSetModel (ListModel<E> lm){ 
     super.setModel(lm); 
     list = new ArrayList<Boolean> (lm.getSize()); 
    } 
} 

내가이

+0

"소거 문제로 인해이 방법을 직접 무시할 수 없습니다." 나는 이것에 대해 들어 보지 못했다. 가능하지 않다고 확신합니까? – Michael

+0

내가 읽었으며 시도한 모든 것이 public class가되도록 클래스 선언을 변경하는 것을 제외하고 컴파일 문제를 만들었습니다. CustomList JList 을 확장하지만 Java 1.6에서는이 선언을 사용할 수 없습니다. 나는 개인적으로 100 % 불가능하고 그렇지 않다는 것을 증명하고 싶습니다. 재정의가 가장 좋은 해결책이 될 것이고 원래의 질문에 대한 필요성을 완전히 제거 할 것입니다. – Maverick

+0

'public void setModel (ListModel lm) '(매개 변수 목록에서 을 제거하십시오)의 문제점은 무엇입니까? – Michael

답변

1

자바 1.6와 붙어 있기 때문에이 재정의를 할 수 있도록 확장에 단순히 JList의 제네릭 할 수 있습니다 Java에서 그렇게 할 수있는 좋은 방법이 아닙니다.

이상적으로는 빌드/CI 프로세스가 있으며 정책 적용 도구를 사용할 수 있습니다. Checkstyle & PMD를 살펴보십시오. 아마도 그 중 하나가 특정 메서드 호출을 블랙리스트에 올릴 수 있습니다.

오류가 발생하면 asm이나 aspectj와 같은 하위 수준 기술을 사용하여 자체 검사를 작성할 수 있지만 쉽지는 않습니다. 아니면 오래된 학교에 가서 소스 파일을 파싱하고 잘못된 메소드 호출을 찾는 테스트를 작성할 수 있습니다.하지만 오류가 발생하기 쉽습니다.

다른 팀원에게 알려주는 것이 가장 좋습니다. 코드 검토를합니까? 너해야 해.

+1

이것이 내가 의심하는 바이지만 그것이 사실이 아니길 바란다. 누군가가이 사실을 입증하지 않으면 내가 받아 들인 대답을 바꿀 것입니다. – Maverick