2017-10-30 1 views

Antwort

1

In dieser Situation ist es kein Grund, generische Parameter zu haben, aber die Java-Spezifikation verbietet es nicht.

Jemand, der das gemacht hat nur einen Fehler gemacht.

EDIT

PS: Ich habe den Fall gefunden, wenn generische Parameter nicht in Methodensignatur ist, aber immer noch nützlich. (Danke für Idee @JimmyB)

Stellen Sie sich vor, dass Sie zwei Schnittstellen haben:

interface A {} 

interface B {} 

Auch zwei Methoden mit folgenden Signaturen:

<T extends A & B> T f1(); 

<T extends A & B> void f2(T t); 

Dann können Sie Verfahren wie dieses:

<T extends A & B> void foo() { 
    T t = f1(); 
    f2(t); 
} 

Es ist nicht genau Methode in Frage, weil es Einschränkungen für generische Parameter haben, aber Es ist so nah wie möglich.

+0

Beachten Sie, dass der Typ-Parameter kann nach wie vor innerhalb der Methode verwendet werden, um mehr oder weniger sicher, mehrere lokalen Variablen haben die gleiche scheinbare Art passieren sollen. – JimmyB

+0

Hmmmm, nicht sicher, ob das die richtige Antwort ist. Aber es gibt keinen besseren als diesen. – user1589188

+0

@JimmyB ja, aber es ist nutzlos, weil Sie immer ihren Typ identifizieren können. Auch können Sie diese vars nicht zuweisen :) – talex

-2

In diesem Fall definiert die Verwendung von Generika nur die Rückgabe der Methode. Obwohl dies für Sie das Objekt in der Definition der Erweiterung der Test-Klasse

public class Test1 extends Test<Object1> { 
    public Object1 void method() { 
     // some code 
    } 
} 

public class Test1 extends Test<Object2> { 
     public Object2 void method() { 
      // some code 
     } 
} 
+0

Können Sie bitte 1) Tags zur Frage hinzufügen und 2) den Kontext Ihrer Frage erläutern. Z.B. Das Hinzufügen der Programmiersprache, mit der Sie arbeiten, würde schon viel helfen. – JohnAndrews

+2

@JohnAndrews das ist die Antwort, nicht die Frage –

Verwandte Themen