2014-06-17 14 views
8

Jestem zdezorientowany, którą metodę należy użyć w tym samym celu? Oba działają dla mnie dobrze.Jaka jest różnica między typem rodzajowym a obiektem w deklaracji metody?

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); 

Która jest najlepsza praktyka korzystania z powyższych? Naprawdę jestem zdezorientowany i nie mogę znaleźć żadnej korzyści ani nikomu krzywdy? Czy jest jakiś? Jeśli tak to, proszę wytłumacz.

Odpowiedz

12

Tak samo nie ma różnicy, ponieważ T używasz tego typu dwukrotnie, więc masz powód, by go użyć, ale dla J jest on używany tylko raz.

Jeśli to naprawdę może być jakikolwiek obiekt i nigdy więcej nie używasz tego typu, nie ma powodu, aby używać do tego generycznych. Generics pozwala ci na pobranie typu i parametrów metody i połączenie 2 lub więcej z nich razem. Pozwalają również na łączenie ze sobą wielu metod przy użyciu generycznych w definicji klasy.

Żadne z tych przypadków nie ma tu zastosowania.

+4

W sumie różnica polega na tym, czy można wykorzystać wnioskowanie typu, gdy kompilator przechwytuje rzeczywisty typ. +1. –

+0

Preferuję pierwszą opcję i unikam używania obiektu. – frostbite

+0

Hi .. @frostbite, dlaczego? –

Powiązane problemy