2014-06-17 9 views
8

Ich bin verwirrt, welche Methode Signature sollte ich für den gleichen Zweck verwenden? Beides funktioniert gut für mich.Was ist der Unterschied zwischen generischem Typ und Objekt in der Methodendeklaration?

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

Welche Best Practice von oben zu bedienen ist? Ich bin wirklich verwirrt und kann keinen Vorteil oder Nachteil von irgendjemand finden? Gibt es irgendwelche? Wenn ja, bitte erklären.

Antwort

12

So gibt es keinen Unterschied, für T verwenden Sie den Typ zweimal, also haben Sie einen Grund, ihn zu verwenden, aber für J wird er nur einmal verwendet.

Wenn es wirklich irgendein Objekt überhaupt sein kann und Sie nie wieder diesen Typ verwenden, gibt es keinen Grund, Generika dafür zu verwenden. Generics ermöglichen Ihnen, den Rückgabetyp und die Parameter der Methode zu verwenden und zwei oder mehr von ihnen miteinander zu verknüpfen. Sie können auch mehrere Methoden verknüpfen, wenn Sie Generics in einer Klassendefinition verwenden.

Keiner dieser Anwendungsfälle gilt hier.

+4

Alles in allem ist der Unterschied, ob Sie die Typinferenz verwenden können, wenn der Compiler den tatsächlichen Typ erfasst. +1. –

+0

Ich bevorzuge die erste Option und vermeide die Verwendung von Objekt. – frostbite

+0

Hallo .. @frostbite, warum? –

Verwandte Themen