0
내가 몇 가지 코드를 아래와 같이 생성 할 :익명의 클래스를 좁히는 방법은 무엇입니까?
JDefinedClass anonymousSomeClass = codeModel.anonymousClass(AbstractSomeClass.class);
...
conditionalBody.decl(anonymousSomeClass, "someClassObj", JExpr._new(anonymousSomeClass.narrow(jClass)));
있어 예외 아래, 'anonymousSomeClass.narrow (JCLASS)'에 의해 발생 :
AbstractSomeClass<?> someClassObj = new AbstractSomeClass<MyConcreteType> {
...
}
나는 다음 시도했다. .narrow (jClass) '를 제거하면 모든 것이 잘됩니다.
java.lang.NullPointerException
at com.sun.codemodel.JDefinedClass.outer(JDefinedClass.java:776)
at com.sun.codemodel.JFormatter.t(JFormatter.java:280)
at com.sun.codemodel.JNarrowedClass.generate(JNarrowedClass.java:143)
at com.sun.codemodel.JFormatter.g(JFormatter.java:350)
at com.sun.codemodel.JInvocation.generate(JInvocation.java:173)
at com.sun.codemodel.JFormatter.g(JFormatter.java:350)
at com.sun.codemodel.JVar.bind(JVar.java:212)
at com.sun.codemodel.JFormatter.b(JFormatter.java:396)
at com.sun.codemodel.JVar.declare(JVar.java:216)
...
감사합니다.
감사 많은이 주위에 방법은 익명의 유형으로 취급하기 전에 클래스를 좁힘으로써, 그러나이있다. 결과는 정확하지만 결과 소스 코드에는 AbstractSomeClass의 여러 중복 가져 오기가 포함됩니다. 당신이 말했듯이, 이것이 CodeModel의 버그 일 수 있다고 생각합니다. – Cheng
중복 된 수입은 무엇을 의미합니까? 하나의 가져 오기가 표시되지만 하나의 AbstractSomeClass는 전체 패키지 이름으로 참조됩니다. 물론, Codemodel은 가장 뛰어난 결과를 생성하는 것으로 알려져 있지 않습니다. –
안녕하세요 jonhcarl. 감사. 생성 된 소스 파일에는 여러 개의 'import test.Tester.AbstractSomeClass'가 있습니다. 나는 당신이 한 곳에서만 그것을 사용한다고 생각합니다. 다른 좁은 유형의 여러 위치에서 anonymousClass를 사용했습니다. 하지만 그건 중요하지 않습니다. 어쨌든 구문 오류가 없기 때문에 수입이 중복됩니다. 당신의 도움을 주셔서 감사합니다. – Cheng