2011-01-10 3 views
6

나는 몇 가지 예제 코드를 통해 일하고 있어요 다음이 등장 :Java - <무엇이 사용되었고 이름은 무엇입니까?

public abstract class RandomPool<T> extends Pool { 
    //Class... 
} 

<>는 무엇을 사용하는거야? 그리고 왜 이것들은 단지 T입니까? 이것은 나를 위해 매우 무작위로 보인다. 그러나, 어떻게 프로그램을 만드는 더 긴 관점에서 그것을 사용할 수 있습니까?

감사합니다. 세부 정보를 추가해야하는지 알려주세요!

+0

모두에게 답변 해 주셔서 감사합니다. Java Generics 문서를 읽고 모든 것을 이해하는지 확인한 다음 문서에서 얻은 내 이해를 바탕으로 가장 설명적인 대답을 수락합니다. – Curtain

답변

10

당신이 당신의 클래스가 허용하는 일반 유형을 선언하는 방법이있다 Java Generics

T는 "유형"

+0

T가되어야 할 필요가 있습니까, 아니면 제가 원하는대로 편지를 사용할 수 있습니까? – Curtain

+2

모든 문자 또는 단어. 그것은 단지 마커입니다. –

1

의 약자 참조하십시오. 당신이 제시 한 예는 읽 타입 T의

추상 클래스 ObjectPool은

T 유형이 런타임에 사용되는 어떤 자리 표시 자입니다 수영장을

3

제네릭을 확장합니다. 예를 들어, 당신은 사용할 수 있습니다

RandomPool<String> pool; 

T가 그 경우에 String를 참조합니다.

Java Generics Tutorial

1

짧은 내림차순 T는 컴파일러 변수 읽기. 귀하의 코드를 게시하면 문자열의 randomPool을 가질 수 있습니다. 예 : RandomPool<String> Foos의 randomPool, eg: RandomPoo<Foo> .... 거의 아무것도. 마음

3

이와

읽기 DOM의 파르의 링크는 그 일은 형식 매개 변수라고합니다.

기본적으로 클래스 RandomPool은 제네릭 클래스입니다. 호출자가 제공하는 다른 클래스를 사용할 수 있도록 형식 매개 변수가 있습니다. List과 같은 자바 컬렉션을 보면 훨씬 더 명확 해집니다.

또한, T은 키워드가 아니므로 원하는대로 type 매개 변수의 이름을 지정할 수 있습니다. 유형과 같은 T를 사용하는 것은 단지 규칙입니다. 일부 콜렉션은 Element와 같은 E를 사용합니다.

1

템플릿을 구현하는 자바 방식 (C++)입니다. T는 인스턴스화 된 특정 객체에 대해 사용하려는 요소의 유형을 나타냅니다. , 당신은 당신이 사용자 정의 클래스 등으로 원주민에서 당신이 ... 원하는대로 사용할 수 있습니다, 해시 맵은 2 개 종류 (일반 유형을 소요 이해할 수 여기

Hashmap <String, int> hm = new HashMap<String,int>(); 
hm.put("k1",1); 
hm.put("k2",2); 

Iterator it = hm.iterator(); 

while (it.hasNext()){ 
    String curr = it.next(); 
    int value = hm.get(curr); 
} 

:

당신은 쉽게 예를 보면 제네릭을 이해할 수있다 기타). 게시 한 예제의 RandomPool은 특정 사용자 정의 유형으로 인스턴스화해야합니다! 따라서 코드를 사용할 때는 다음과 같이 코드를 작성해야합니다. 즉,

RandomPool<String> myR = new RandomPool<String>(); 
1

아무 것도 없습니다.이것은 순위 1 매개 변수 다형성에 대한 Java의 구문입니다.

관련 문제