java - 强制 Java 上层类型转换类

标签 java class casting

可以在 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/

相关文章:

java - Eclipse 在注释下面添加导入

c++ - 如果没有创建该类的对象,该类的静态成员是否会占用内存?

class - 如何强制模式编译的类将特定的类扩展到模式之外

c++ - 动态转换为 vector 迭代器

Java:接口(interface)

java - java中如何退出全屏模式?

java - Java:在自己的方法中引用类

java - Json Deserializer - 如何从父 JSON 对象获取数据

C# - 自定义三角形类,调用值

通过强制转换在 uint8_t[8] 和 uint64_t 之间安全转换?