Chcę utworzyć interfejs, który pozwala każdej klasy realizacja tak:wejściowy interfejs Java argumentem rozciąga się od klasy bazowej
public interface MyInterface
{
void doSomething(<A extends MyBaseClass> arg1);
}
public class MyImpl implements MyInterface
{
void doSomething (SomeClassExtendsMyBaseClass arg1)
{
// do something
// SomeClassExtendsMyBaseClass is a class that extends MyBaseClass
}
}
pojawia się błąd składni podczas wykonywania powyższych. Czy ktoś może mi pokazać, jak osiągnąć ten cel?
Dzięki
+1 - Jest to najlepsze rozwiązanie, jeśli rodzaj ogólny jest ściśle ograniczony do jednej metody. – Jeremy
Nie ma sensu, aby metoda przyjmowała argument typu "T rozszerza MyBaseClass", chyba że musisz zrobić coś innego z 'T', np. Zwrócić obiekt typu' T' lub ograniczyć inny parametr przy użyciu tego typu . W takim przypadku bardziej odpowiednie byłoby "void doSomething (MyBaseClass arg1)". Dodatkowo OP wyraźnie chce implementacji swojego interfejsu, aby móc ograniczyć typ 'MyBaseClass' akceptowanej przez metodę; Ogólne metody pozwalają _caller_ na określenie typu. – ColinD
@Colin: "chyba że musisz coś zrobić z' T' "- czy nie tego chce OP? – Jeremy