Heim > häufiges Problem > Warum Instanz von eine Schnittstelle herstellen kann

Warum Instanz von eine Schnittstelle herstellen kann

小老鼠
Freigeben: 2023-11-13 15:09:57
Original
996 Leute haben es durchsucht

instanceof kann nicht verbunden werden. Der Grund dafür ist: Das Schlüsselwort „instanceof“ wird verwendet, um zu überprüfen, ob ein Objekt eine Instanz einer bestimmten Klasse ist, und kann nicht direkt verwendet werden, um zu überprüfen, ob ein Objekt eine Instanz einer Schnittstelle ist, da die Schnittstelle nicht instanziiert werden kann.

Warum Instanz von eine Schnittstelle herstellen kann

Das Betriebssystem dieses Tutorials: Windows 10-System, Dell G3-Computer.

In Java wird das Schlüsselwort „instanceof“ verwendet, um zu prüfen, ob ein Objekt eine Instanz einer bestimmten Klasse ist. Es kann nicht direkt verwendet werden, um zu überprüfen, ob ein Objekt eine Instanz einer Schnittstelle ist, da Schnittstellen nicht instanziiert werden können. Es gibt jedoch einige indirekte Möglichkeiten, um zu überprüfen, ob ein Objekt eine Schnittstelle implementiert.

Zuerst müssen wir Generika und Typlöschung in Java verstehen. In Java sind Generika ein Mechanismus zur Typprüfung zur Kompilierungszeit. Damit können Sie überprüfen, ob Variablen, Parameter, Rückgabetypen usw. zur Kompilierungszeit mit bestimmten Typen übereinstimmen. Typlöschung ist ein Mechanismus, der generische Typinformationen zur Kompilierungszeit löscht, sodass der Laufzeitcode die generischen Typinformationen nicht kennt.

In Java können Sie Generika und Typlöschung verwenden, um eine Sammlung zu erstellen, die jeden Typ akzeptieren kann, z. B. List. Anschließend können wir der Sammlung ein Objekt hinzufügen, das eine Schnittstelle implementiert. Innerhalb der Sammlung wird der tatsächliche Typ des Objekts gelöscht, so dass nur die Information übrig bleibt, dass es die Schnittstelle implementiert.

Auf diese Weise können wir überprüfen, ob ein Objekt zur Laufzeit eine bestimmte Schnittstelle implementiert. Beispielsweise können wir eine Methode erstellen, die ein List als Parameter akzeptiert, die Liste durchläuft und prüft, ob jedes Objekt die angegebene Schnittstelle implementiert. Wenn ein Objekt gefunden wird, das diese Schnittstelle implementiert, kann das Objekt zurückgegeben werden; andernfalls können Null oder andere Standardwerte zurückgegeben werden.

Hier ist ein einfacher Beispielcode, der zeigt, wie man mithilfe von Generika und Typlöschung überprüft, ob ein Objekt eine bestimmte Schnittstelle implementiert:

import java.util.List;  
  
public class InstanceOfInterfaceExample {  
    public static <T> T findFirstInstance(List<Object> list, Class<T> interfaceClass) {  
        for (Object obj : list) {  
            if (interfaceClass.isInstance(obj)) {  
                return interfaceClass.cast(obj);  
            }  
        }  
        return null;  
    }  
}
Nach dem Login kopieren

In diesem Beispiel akzeptiert die findFirstInstance-Methode ein List ein Parameter, wobei T der Typ der zu findenden Schnittstelle ist. Diese Methode durchläuft jedes Objekt in der Liste und verwendet die Methode Class.isInstance(), um zu prüfen, ob das Objekt eine Instanz der angegebenen Schnittstelle ist. Wenn ja, verwenden Sie die Methode Class.cast(), um das Objekt in ein Objekt des angegebenen Schnittstellentyps umzuwandeln und es zurückzugeben. Wenn kein passendes Objekt gefunden wird, wird null zurückgegeben.

Das obige ist der detaillierte Inhalt vonWarum Instanz von eine Schnittstelle herstellen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage