2013-04-25 9 views

Odpowiedz

19

Zastosowanie isAssignableFrom

if(d.isAssignableFrom(c)){ 
    // then d is a superclass of c 
    // in other words, c inherits d 
} 

do określania, czy klasa lub interfejs reprezentowane przez klasę obiektu jest albo taki sam, albo oznacza superklasę lub superinterface z klasa lub interfejs przedstawiony określony parametr klasy. To zwraca true, jeśli tak; w przeciwnym razie zwraca wartość false. Jeśli ten obiekt klasy reprezentuje typ pierwotny, ta metoda zwraca wartość true, jeśli podany parametr klasy jest dokładnie tym obiektem klasy; w przeciwnym wypadku zwraca wartość false.

Source

1

Jak o

public boolean isInterface();

Według docs:

Określa, czy określony obiekt klasy reprezentuje typ interfejsu. Zwroty: prawda, jeśli ten obiekt reprezentuje interfejs; fałszywie inaczej.

+0

Dlaczego głosowanie jest niepoprawne? Byłem pierwszym, który wspomniał o "isInterface' – Apurv

3
Nie

jest metoda zwana Class#isInterface() w Class

if (c.isInterface()) 
      return true; 
+0

pomocy w dół do komentowania? – PermGenError

+2

Nie scharakteryzowałem, ale moją pierwszą myślą, kiedy zobaczyłem tę odpowiedź, było to, jak sprawdza dziedziczenie lub implementację konkretnego interfejsu. Być może pytanie zmieniło się na tobie, ale jeśli ponownie go przeczytałeś, OP stara się odkryć, czy jedna klasa rozszerza inną lub implementuje określony interfejs. Zauważ, że komentarz 'c dziedziczy d''? –

+1

@KevinBowersox początkowo pytanie tytuł był inny. :) – PermGenError

0

próbowałeś z

c.isInterface()??? 

od docs

Określa, czy określony obiekt klasy represe nts typ interfejsu.

2

Spróbuj tego

if(c.isAssignableFrom(d)){ 
    return true; 
} else { 
    return false; 
} 
+0

Prawa wskazówka, ale c i d muszą być wymieniane 'd.isAssignableFrom (c)'. – Bitterblue

+0

Czy nie ma większego sensu pisać powrót c.isAssignableFrom (d)? Czy może pan Verbose? – Snickers3192

1
if (c.isInterface()) return true; 

isInterface

public boolean isInterface() 

Określa, czy określony obiekt klasy reprezentuje typ interfejsu. Zwroty: prawda, jeśli ten obiekt reprezentuje interfejs; fałszywie inaczej. sAssignableFrom

public boolean isAssignableFrom(Class<?> cls) 

do określania, czy klasa lub interfejs reprezentowane przez obiekt klasy jest albo taki sam, albo oznacza superklasę lub superinterface z klasa lub interfejs przedstawionego określonego parametru klasy. Zwraca true, jeśli tak; w przeciwnym razie zwraca wartość false. Jeśli ten obiekt Class reprezentuje typ pierwotny, ta metoda zwraca wartość true, jeśli określony parametr Class jest dokładnie tym obiektem Class; w przeciwnym razie zwraca wartość false.

W szczególności ta metoda sprawdza, czy typ reprezentowany przez określony parametr Klasy może być przekonwertowany na typ reprezentowany przez ten obiekt klasy poprzez konwersję tożsamości lub przez rozszerzającą konwersję odniesienia. Aby uzyskać szczegółowe informacje, patrz Specyfikacja języka Java, część 5.1.1 i 5.1.4.

Parametry: CLS - obiekt klasy należy sprawdzić Powroty: wartość logiczną wskazującą, czy obiekty CLS typu można przypisać do obiektów tej klasy rzuca: NullPointerException - Jeśli podano parametr klasa jest null . Od: JDK1.1

Powiązane problemy