簡體   English   中英

Java獲取這個的運行時類?

[英]Java get runtime class of this?

說我有以下對象層次結構:

public abstract class Animal {
    ...
}

public class Canine extends Animal {
    ...
}

public class Feline extends Animal {
    ...
}

public class Dog extends Canine {
    ...
}

public class Wolf extends Canine {
    ...
}

public class Leopard extends Feline {
    ...
}

假設Animal類具有一個final方法,該方法需要根據對象的運行時類型/類采取不同的操作:

public abstract class Animal {
    // Lots of stuff blah blah blah

    public final makeNoise() {
        // If we're a Dog, then System.out.println("Woof!");
        // Else if we're a Wolf, then System.out.println("Gggrrrrr!");
        // etc.
    }
}

這是一個關鍵:知道最佳實踐和OOP會讓我編寫makeNoise()作為抽象方法,然后在每個子類中實現一個不同的版本。 但是 ,由於超出此問題范圍的原因,我無法做到這一點。

因此,除非有最佳的OOP慣例, makeNoise()如何從父makeNoise()方法內部makeNoise()我們的運行時類是什么?

您可以使用instanceof運算符: “ instanceof”運算符用於什么?

請記住,按照您的要求做事將要求Animal知道其所有子類(直接和其他)。 顯然,這無法擴展,並且會引起維護問題。

要獲取運行時類,請使用getClass()。 即使代碼在超類中,它也將返回子類。

this.getClass()

暫無
暫無

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

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