2011-08-18 7 views
0

문제 : 응용 프로그램에서 일부 라이브러리를 사용합니다. Like :Java 라이브러리 클래스에 새 함수 추가

ClassA a=new ClassA(); 

이 라이브러리에서 classA는 클래스 B를 사용합니다. 클래스 B에서 어떤 메소드를 호출하십시오. 이 방법의 작동 방식을 변경해야합니다. AOP를 사용하지 않고도 가능합니까? 감사합니다. .

+0

질문에 세부 정보를 추가해야합니다. 그것은 의미가 없습니다. – Mitch

답변

2

두 가지 옵션이 있습니다. 단점 : 라이브러리의 모든 새 버전에 대해 새 패치 버전을 작성해야합니다.

b)이를 위해 AOP (아마 AspectJ 사용)가 가장 쉬운 방법입니다. 다른 옵션은 commons/bcel 또는 cglib을 사용하여 프로그래밍 방식으로 수행하는 것입니다. 바이트 코드 조작을 사용하면 많은 인프라 프로그래밍 (예 : 사용자 정의 ClassLoader 또는 패치를 실행하는 Java 에이전트 제공)을 수행해야하지만 원하는 동작 만 구현하면되기 때문에 AOP가 더 쉽습니다.

대체 c)가 가장 좋은 경우가 많습니다. 도서관 개발자에게 문의하여 필요한 기능을 제공하도록 요청하십시오.

1

ClassA가 마지막이 아닌 경우 ClassA를 서브 클래스화할 수 있습니다. 라이브러리의 소스를 다운로드하고 라이브러리가 어떻게 작동하는지 살펴 보려면 내부를 살펴보아야합니다. 최후의 수단으로 서브 클래스 만 작성하면됩니다. 라이브러리를 중단하고 싶지는 않습니다.

가) 수정 소스
B)

가) 의미 바이트 코드를 수정 : 소스를 다운로드, 변경, 자신의 버전을 구축하고 사용

관련 문제