추상화 클래스를 사용하여 특수화 클래스를 동적으로 생성하는 가장 좋은 방법은 무엇입니까?특수화 클래스의 동적 생성
public class Manager {
public static <T> T getInstance(Class<T> c) {
return <"instance of dynamically generated specialization class">;
}
public static void main(String[] args) {
Parent parent = getInstance(Parent.class);
}
}
:
public abstract class Parent {
public Parent(int i) {
// initialization here ...
}
@AnImportantAnnotation("")
public abstract Object testMethod();
}
은 그럼 예를 들어 같은, 그것의 추상 클래스 반환 및 인스턴스를 수신하는 방법을 가지고 싶다 : 예를 들어
,의이 내 부모 클래스라고하자
getInstance
메서드에서 반환 한 인스턴스의 클래스는 Parent
클래스에있는 추상 메서드를 재정의합니다. 생성 된 메소드의 코드는 해당하는 부모 메소드의 주석에 따라 다릅니다.
또한 생성 된 클래스는 부모와 동일한 생성자를 정의해야합니다. 예를 들어, 생성 된 클래스가 동등해야합니다 (I 외부 라이브러리를 사용하지 않고 메모리 (디스크에 파일에 읽기/쓰기)이 작업을 수행하지하는 방법과 가능하면 포인터를 선호
public class Son extends Parent {
//generated constructor
public Son(int i) {
super(i);
}
public Object testMethod() {
// dynamically generated behaviour guided by annotations on the overridden method
return aReturnValue;
}
}
예를 들면, Javassist). 그러나, 그러한 라이브러리에 의존하는 기술에 대한 설명도 또한 높이 평가된다. 도움을 주셔서 감사합니다.
+1 : 정말 메모리에서'JavaCompiler'를 사용하여 대답을보고 싶습니다. (파일을 디스크에 읽거나 쓰지 않아도됩니다.) 컴파일 타임에 클래스를 검색하기 위해 지정된'ClassLoader'를 사용할 수 있습니다. ! –
방금 @BrunoReis라는 질문에 귀하의 의견이 포함되었습니다. 참으로 훌륭한 관찰입니다, 감사합니다 !! – Sergio