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
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
ISO 8601 호환 문자열을 java.util.Date로 변환 (0) | 2021.06.30 |
---|---|
Java import 문에 와일드 카드를 사용하는 것이 왜 나쁜가요? (0) | 2021.06.26 |
Java Map의 각 항목을 효율적으로 반복하는 방법 (0) | 2021.06.24 |
Java에서 배열을 선언하고 초기화하는 방법 (0) | 2021.06.22 |
목록 초기화 방법<String> Java의 개체? (0) | 2021.06.22 |