[英]Is it possible to get serialVersionUID of the java class in runtime
[英]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.