이 Java 클래스 정의가 무엇인지 이해하려고합니다.Java 클래스 정의
abstract public class A<P extends B<?, ?>,Input,Output>
{
...
// class defined
...
}
자바
꺾쇠 괄호 표기 Java Generics위한이 Java 클래스 정의가 무엇인지 이해하려고합니다.Java 클래스 정의
abstract public class A<P extends B<?, ?>,Input,Output>
{
...
// class defined
...
}
자바
꺾쇠 괄호 표기 Java Generics위한이 세 가지 형태 파라미터를 가지는 A
라고하는 추상 클래스 정의 : 어떤의 (어떤 형태 인수를 가지는) 타입 B
이어야합니다
P
, 또는 그것에서Input
을 파생 된 모든 유형의 어떤 종류의 관심의의,
Output
이동는 C++ 프로그래머.
-1 C++ 사람들은 제네릭이 무엇인지 이미 알고 있다고 생각합니까? C++ 템플릿은 Java 제네릭보다 훨씬 비쌉니다. –
주요 차이점은 C++에서 각각의 전문화는 별도의 클래스를 작성하는 반면 Java에서는 전문화가 컴파일 타임에 손실되는 것입니다. – MeBigFatGuy
@MeBigFatGuy : 음 ... * 컴파일 단계가 완료된 후 ... Java generics는 C++ generics와 같이 구체화되지 않았습니다. –
글쎄, 실제로 이해하기 위해서는 더 많은 정의를 포함하고 싶지만, B는 제네릭 그 자체의 클래스이고, A는 3 개의 일반적인 참조를 포함하고 있습니다. 조금 병적이지만, 단계를 밟을 때는 상당히 쉽습니다.
"번역"의 비트 :
"초록"이 클래스는 추상 (~ = 가상 순수) 방법이있을 수 있습니다 의미합니다.
클래스 A는 일반 (~ 템플릿) 정의
P는
P는 확장 B <? ... ... 일반 매개 변수에 대한 추가 제한 조건의 서브 클래스해야입니다 확장? >은 일반 매개 변수 # 1이 다른 일반 클래스의 하위 클래스임을 의미합니다.
순수 가상을 갖고 있지 않을 수도 있습니다. Java의 추상 클래스는 그 자체로 직접 인스턴스화 할 수 없다는 특성을 가지고 있습니다. –
수정 해 주셔서 감사합니다 - 답변을 수정했습니다. –
3 개의 일반 매개 변수가있는 추상 클래스 정의입니다.
첫번째 파라미터 P는 형으로되어있는 제약을 갖는다 (또는 그 연장) 두 일반 파라미터 (이들에 제한 없음)이 클래스/인터페이스 B를 그래서 같을 수
public class B<T1, T2> {
}
두 번째 및 세 번째 매개 변수 인 입력 및 출력에는 제약이 없습니다.
im C++ 프로그래머도 자바에서 약간 엿보고 STL 템플릿 정의처럼 보입니다 :) –
많은 복제본이 있습니다 : http://stackoverflow.com/questions/490091/java-generics – MeBigFatGuy
+1 @ MeBigFatGuy 님의 사용자 명 : lol –