자바가 java.lang.reflect.Type
인 이유를 누군가가 알기를 바랐습니다. 모든 것이 이미 Object
에서 상속 받았습니까?Object가 Object 인 경우 Java에 Type이있는 이유는 무엇입니까?
누군가 Object
이 아닌 Type
을 사용해야하는 경우를 예로 들려 줄 수 있습니까?
자바가 java.lang.reflect.Type
인 이유를 누군가가 알기를 바랐습니다. 모든 것이 이미 Object
에서 상속 받았습니까?Object가 Object 인 경우 Java에 Type이있는 이유는 무엇입니까?
누군가 Object
이 아닌 Type
을 사용해야하는 경우를 예로 들려 줄 수 있습니까?
Object
은 모든 Java 클래스의 기본 클래스입니다. Type
은 유형을 나타내는 모든 클래스의 태그 인터페이스 일뿐입니다. java 1.5 이전에는 java.lang.Class
을 제외한 java 유형을 나타내는 클래스가 없었기 때문에 1.5 버전에서 도입되었습니다. 그런 다음 제네릭이 도입되었을 때 Class
, 일반 배열 등의 일반적인 추상화가 필요했습니다. 그래서 인터페이스 Type
을 정의했습니다.
'Object'는 모든 클래스의 수퍼 유형이며 'Class'는 클래스를 정의하는 클래스이고 'Type'은 기본 유형 (int, boolean 등)을 다루는 수퍼 유형입니다.
완전히 잘못되었습니다. Javadoc을 보라. 'Object'는 슈퍼 타입이 아닙니다. 'Type'은 슈퍼 타입이 아니며, 그것은'인터페이스'입니다; 그것은 원시 타입을 포함하지 않는다; Generics에서만 사용됩니다. -1 – EJP
다음은 javadoc이 java.lang.reflect.Type에 대해 말한 내용입니다. "유형은 원시 타입, 매개 변수화 된 유형, 배열 유형, 유형 변수 및 유형을 포함하여 Java 프로그래밍 언어의 모든 유형 **에 대한 공통 수퍼 인터페이스 **입니다. ** 기본 유형 ** ". – javadeveloper
실제로. OP가 놓친 핵심 요소는 모든 클래스가 그 자체가'객체 '라는 것입니다. – Barend
그래서 많은 다른 Object.class가 필요할 때 Type을 사용할 것입니까? –
아니요, 하나를 반환하는 API를 사용할 때'Type'을 사용합니다. 그럴 기회가 없으며 그렇게 할 수있는 방법이 없습니다. – EJP