프로그래밍 언어/JAVA

Java에서 일반 유형의 인스턴스를 만드는 방법

Rateye 2021. 6. 24. 11:40
728x90
반응형
질문 : Java에서 일반 유형의 인스턴스를 만드시겠습니까?

Java에서 제네릭 유형의 인스턴스를 만들 수 있습니까? no ( type erasure로 인해) 라는 것을 본 것을 기반으로 생각하고 있지만 누군가 내가 놓친 것을 볼 수 있다면 관심이있을 것입니다.

class SomeContainer<E> {     E createContents()     {         return what???     } } 

편집 : Super Type Tokens를 사용하여 내 문제를 해결할 수 있지만 아래 답변 중 일부에서 알 수 있듯이 많은 반사 기반 코드가 필요합니다.

Ian Robertson의 Artima Article 과 극적으로 다른 것을 생각해내는 사람이 있는지 확인하기 위해 잠시이 내용을 열어 두겠습니다.

답변

당신이 올바른지. new E() 할 수 없습니다. 그러나 당신은 그것을 변경할 수 있습니다

private static class SomeContainer<E> {
    E createContents(Class<E> clazz) {
        return clazz.newInstance();
    }
}

고통입니다. 하지만 작동합니다. 공장 패턴으로 포장하면 조금 더 견딜 수 있습니다.

출처 : https://stackoverflow.com/questions/75175/create-instance-of-generic-type-in-java
728x90
반응형