[英]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.