문제

나는 제네릭을 많이 좋아하고 내가 할 수있는 곳마다 사용합니다. 매번 이전 JVM (5.0 이전)에서 실행 해야하는 다른 프로젝트에서 내 수업 중 하나를 사용해야합니다. 제네릭 지원).

현재 모든 제네릭을 수동으로 제거하여 많은 캐스트를 삽입하는 것을 의미합니다.

제네릭은 컴파일 타임 전용이라고 말하고 모든 제네릭 코드가 비 게 릭 코드로 자동으로 변환 될 수 있으므로이를 수행 할 수있는 도구가 있는지 궁금합니다.

그러한 도구가 없다면 어떻게 문제를 해결할 수 있습니까? 제네릭 사용을 완전히 중지해야합니까?

이미 관련 답변이 있습니다 바이트 코드 계산 성. 내가 필요하다면 어떨까요? 소스 코드 계산 성 몇 가지 이유?

도움이 되었습니까?

해결책

당신은 같은 것을 사용해야합니다 Retroweaver 이런 종류의 일을 달성하기 위해. 이 질문에 대한 다른 답변은 약간 오해의 소지가 있습니다. 제네릭은 이전 버전과 호환되는 간단한 바이트 코드이지만 완전히는 아닙니다 (참조 java.lang.reflect.Type 당신이 나를 믿지 않는다면). 또한 Bytecode 버전 속성 문제가있어서 1.5에 대한 클래스가 이전 버전에서 실행되는 것을 방지합니다. Retroweaver는 두 가지 문제를 모두 해결하는 동시에 주석 및 열거와 같은 다른 Java 5 기능을 가능하게합니다.

다른 팁

NetBeans에서 (어떤 IDE를 사용하고 있는지 잘 모르겠습니다) 소스 코드 호환성을 세트 Java 버전으로 설정할 수 있습니다. 이미 게시 된 바와 같이, 제네릭은 기존 JVM / JRE 버전과 바이 코드 호환 가능하므로 상자에서 벗어나야합니다.

내가 아는 한, Java 5는입니다 ~ 아니다 Java 1.4와 호환되는 바이트 코드. 즉, 이전 VM과 함께 Java 5 컴파일 클래스를 사용할 수 없습니다.

Retroweaver를 확인할 수 있습니다. 이것은 제네릭이 소개되었을 때 많이 언급되었습니다. 나는 개인적으로 그것에 대한 경험이 없습니다.

구글에게 물어 보셨나요? 내 검색이 나타났습니다 http://www.publicobject.com/glazedlists/documentation/generics_and_java_1.4_with_one_codebase.pdf, 이것은 매우 흥미로운 접근법 인 것 같습니다.

바이트 코드 호환성이 있으므로 오래된 통역사와 함께 상자 밖으로 작동해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top