제네릭은 "템플릿"에 지정된 개체 클래스가 클래스 클래스 또는 메서드 자체에서 제공하는 기능과 아무런 관련이 없거나 거의없는 경우 클래스 및/또는 메서드의 재사용을 향상시키기위한 것입니다.
가장 좋은 예는 일반 유형이 검은 색 상자 인 데이터 구조입니다. 당신은 그들을 신경 쓰지 않고, 어떤 식 으로든 그것들을 모으는 것이 중요합니다.이 객체들을 어떻게 색인하고, 정렬하고, 찾거나, 트래버스하는지 ...입니다.
당신이 제안하고있는 경우 (return (E) "test";
)는 당신이이 객체들 중 하나를 만들기 때문에 그 원칙에 위배됩니다. 왜냐하면 당신은 그 객체의 클래스 세부 사항을 알아야하기 때문입니다.
오브젝트 쌍을 표현하는 클래스를 제공한다고 가정하십시오. 이러한 객체의 특성에 대해 전혀 신경 쓰지 않고 객체 참조로 그룹화하는 방법을 제공하기 만하면됩니다.
public class Pair<T,S> {
public T getFirst() {
return first;
}
public void setFirst(T first) {
this.first = first;
}
public S getSecond() {
return second;
}
public void setSecond(S second) {
this.second = second;
}
private T first;
private S second;
}
쌍을 집계 넘어 first
또는 second
와 아무 상관이있다 : 이것은 일반적인 유형의 사용의 전형적인 경우이다.
예를 캐스팅없이 타입 E를 반환 할 수 있습니다, 예를 들면 : 다음은 샘플 코드입니다 'Map':'return map.get (key);'. –
sp00m
어디에서이 함수를 사용했는지에 따라 유형이 컴파일 타임에 알려지고 자동으로 반환 형식이 E로 설정됩니다. –
문자열을 반환하기 전에 String으로 캐스팅하면 클래스가 generic이 아니어야합니다. 문자열 만 반환 할 수 있습니다. –