可以在 java 中强制使用大写类型吗?请参阅示例。
public class Animal{}
public class Dog extends Animal{}
Dog dog = new Dog();
Animal test = dog;
我有:(test instanceof Dog)
和 (test instanceof Animal)
返回 true。
我想要什么:(test instanceof Dog)
== false and (test instanceof Animal)
== true
有没有办法强制测试只是一个动物? 或者唯一的方法是为动物传递狗创建一个构造函数?我试图避免创建构造函数,因为我有一个复杂的对象,其中有很多 getter/setter。
谢谢。
最佳答案
我不知道你为什么会关心一个对象是 Animal
而不是 Dog
,毕竟 Dog
是动物
。任何可以应用于狗
的东西都应该适用于动物
,否则就是设计问题。
但是如果你必须确定那个,然后调用 getClass()
(由Object
定义)获取Class
对象,然后将其与Animal.class
进行比较。
if (Animal.class == test.getClass())
关于java - 强制 Java 上层类型转换类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18319083/