2009-08-25 14 views
10

Zastrzeżenie: Nie mam całe mnóstwo doświadczeń z Java rodzajowych, ale moi koledzy i ja właśnie spędziliśmy stałą godzinę próbując rozszyfrować interfejs, który został zorganizowany tak:Ogólny interfejs przyjmuje siebie jako parametr. Cykl rekurencyjny?

interface HasAttributes<A extends HasAttributes<A, B>, 
         B extends HasAttributesType<B>> extends Identification<B> { 

Co dokładnie robi oznacza kiedy typowy interfejs przyjmuje parametr typu, który sam jest? Co to robi?

+0

Czy możesz dodać co najmniej część treści interfejsu? – Zed

+2

No cóż, i wyjaśnienie, co to znaczy. Przepraszam za frustrację zawartą w pytaniu, ale musicie zrozumieć frustrację wynikającą z prób rozumowania radykalnie zawikłanego kodu. Mieliśmy czterech doświadczonych programistów próbujących zrozumieć kod, który został napisany przez naszego piątego mężczyznę - niezależnego programistę. Nikt z nas nie mógł tego zrobić. Po półtorej godziny. Nie trzeba dodawać, że byłem trochę sfrustrowany, gdy pisałem to pytanie. –

+2

'Interface' nie jest poprawna składnia Java – newacct

Odpowiedz

10

Nie jest sens tego - klasa Java Enum jest dobrym przykładem simliar sytuacji:

public abstract class Enum<E extends Enum<E>> 
    implements Comparable<E>, Serializable 

Istnieją pewne wiecania odpowiedzi w this Stack Overflow question about Enum które powinny rzucić nieco światła na to szczególne zastosowanie leków generycznych dla ciebie, a także odpowiedzieć na to bardziej elegancko niż ja.

+0

Dziękuję, to pomaga niezmiernie. Byliśmy bardzo, bardzo zdezorientowani tym. –

+2

"Ma to znaczenie" Więc dlaczego nie wyjaśnisz tego znaczenia? – newacct

+0

@newacct, podczas gdy niestandardowe jest wstawiane podsumowanie linku do pytania Nie sądzę, że skopiowanie-wklejenie połączonej odpowiedzi byłoby bardziej wartościowe w tym przypadku (jest to link do innego pytania SO, więc będzie miał taki sam czas życia jak ten) ... Zapraszam do przeczytania i podsumowania połączonej odpowiedzi tutaj. –

Powiązane problemy