정말 간단합니다. J2SE 5에 도입 된 새로운 기능 입니다. 클래스 이름 뒤에 꺾쇠 괄호를 지정하면 모든 유형의 데이터를 보유 할 수있는 임시 데이터 유형을 작성한다는 의미입니다.
예:
class A<T>{
T obj;
void add(T obj){
this.obj=obj;
}
T get(){
return obj;
}
}
public class generics {
static<E> void print(E[] elements){
for(E element:elements){
System.out.println(element);
}
}
public static void main(String[] args) {
A<String> obj=new A<String>();
A<Integer> obj1=new A<Integer>();
obj.add("hello");
obj1.add(6);
System.out.println(obj.get());
System.out.println(obj1.get());
Integer[] arr={1,3,5,7};
print(arr);
}
}
대신 <T>실제로 무엇이든 쓸 수 있으며 같은 방식으로 작동합니다. <ABC>대신 쓰기 를 시도하십시오 <T>.
이것은 단지 편의를위한 것입니다.
<T> 모든 유형이라고합니다
<E> 요소 유형으로
<N> 숫자 형으로
<V> 가치로
<K> 열쇠로
그러나 원하는 이름을 지정할 수 있지만 실제로는 중요하지 않습니다.
또한, Integer, String, Boolean등 어떤 도움이 컴파일시 타입의 체크 자바의 래퍼 클래스입니다. 예를 들어 위의 코드에서 obj유형 String은이므로 다른 유형을 추가 할 수 없습니다 (시도 obj.add(1)오류가 발생합니다). 마찬가지로 유형 obj1의 Integer유형이므로 다른 유형을 추가 할 수 없습니다 (시도 obj1.add("hello")오류가있을 것입니다).
T createObject수영장이나 PoolFactory 내부에 있어야하는데? 어디에this.freeObjects = ...있어야합니까? 별도의 예입니까? 거기에있는 것은 불법입니다. 메소드 안에 있어야합니다.