2014-06-17 7 views
8

Signature 같은 방법으로 사용해야하는 방법이 혼란 스럽습니까? 둘 모두 나를 위해 잘 작동합니다.메소드 선언에서 일반 유형과 객체의 차이점은 무엇입니까?

1

위에서 사용하는 가장 좋은 방법은
public <T, J> T findUniqueByCondition(String tableName, 
             String key, 
             J value, 
             Class<T> targetObject); 

2

public <T> T findUniqueByCondition(String tableName, 
            String key, 
            Object value, 
            Class<T> targetObject); 

? 나는 정말로 혼란스럽고 누군가의 이점이나 불이익을 찾을 수 없습니까? 있어요? 그렇다면 설명하십시오.

답변

12

차이점이 없으므로 T는 유형을 두 번 사용하므로 사용할 이유가 있지만 J는 한 번만 사용됩니다.

실제로 모든 객체가 될 수 있고 다시는 그 유형을 사용하지 않으면 제네릭을 사용할 이유가 없습니다. Generics를 사용하면 메서드의 반환 형식과 매개 변수를 가져 와서 둘 이상을 함께 연결할 수 있습니다. 또한 클래스 정의에서 제네릭을 사용할 때 여러 메소드를 함께 연결할 수 있습니다.

여기에 해당 사례가 적용되지 않습니다.

+4

모두 차이점은 컴파일러가 실제 유형을 캡처 할 때 유형 유추를 사용할 수 있는지 여부입니다. +1. –

+0

첫 번째 옵션을 선호하며 Object 사용을 피하십시오. – frostbite

+0

안녕하세요. @frostbite, 이유가 무엇입니까? –