簡體   English   中英

如何判斷一個類是否等於或擴展另一個類(java)

[英]how do I tell if a class is equal to or extends another class (java)

所以我正在編寫一個Minecraft mod,其中我成功添加了一個手槍,它可以處理各種支持類,可以處理光線跟蹤和聲音以及GUI疊加等內容。 當手槍工作完美時,我想添加對其他mod的支持,使用我的武器類作為基類添加自己的武器。 我的問題是如何讓我的支持類知道一個item類實際上是一個擴展我的武器類的自定義類。 基本上我需要知道的是,是否可以使用我的武器的基礎數據和函數將類的實例強制轉換為我的武器類進行處理(請注意,我獲得了WeponItem類擴展的Item類的實例) 。 有誰知道這樣做的好方法?

if(object instanceof SomeClass)

15.20.2。 類型比較運算符instanceof

if(someObject instanceof SomeClass)

JLS學習,向最好的人學習。

您可以使用instanceof來檢查您的類型。

以下示例可以幫助您

class InstanceofDemo {
public static void main(String[] args) {

    Parent obj1 = new Parent();
    Parent obj2 = new Child();

    System.out.println("obj1 instanceof Parent: "
        + (obj1 instanceof Parent));
    System.out.println("obj1 instanceof Child: "
        + (obj1 instanceof Child));
    System.out.println("obj1 instanceof MyInterface: "
        + (obj1 instanceof MyInterface));
    System.out.println("obj2 instanceof Parent: "
        + (obj2 instanceof Parent));
    System.out.println("obj2 instanceof Child: "
        + (obj2 instanceof Child));
    System.out.println("obj2 instanceof MyInterface: "
        + (obj2 instanceof MyInterface));
}
}

class Parent {}
class Child extends Parent implements MyInterface {}
interface MyInterface {}

Output:

obj1 instanceof Parent: true
obj1 instanceof Child: false
obj1 instanceof MyInterface: false
obj2 instanceof Parent: true
obj2 instanceof Child: true
obj2 instanceof MyInterface: true

參考例子。

instanceOf應該幫助你做到這一點。

if(yourObject instanceof OtherClass)

如果您有一個未知類的對象,您還可以在該對象上使用.getClass()來查找該類。 您還可以比較兩個這樣的對象:

if(yourObject instanceof OtherObject)

還有一些你應該注意的事項: http//www.javapractices.com/topic/TopicAction.do?Id=31

您可以檢查類是否是基類的實例:

if (objA instanceof baseObj){

// objA is instance of baseObj

}

你可以這樣做

Pistol  pistol  = new Pistol ();

if(pistol instanceof Weapon )

請注意:你真的不應該這樣做。 您應該定義一個名為Weapon的接口,然后所有武器必須實現,然后包含程序所需的所有方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM