强制Java上级类

1 java casting class

可以在java中强制高级转换类型吗?查看示例.

public class Animal{}

public class Dog extends Animal{}

Dog dog = new Dog();  
Animal test = dog;
Run Code Online (Sandbox Code Playgroud)

我有什么:(test instanceof Dog)并且(test instanceof Animal)返回真实.
我想要的是:(test instanceof Dog)== false和(test instanceof Animal)== true

有一种方法可以强制测试只是一个动物吗?或者唯一的方法是创建动物传递狗的构造函数?我试图避免创建一个构造函数,因为我有一个复杂的对象,有很多getter/setter.

谢谢.

rge*_*man 7

我不知道为什么你会关心一个物体是一个Animal但不是一个Dog,毕竟,一个Dog是一个Animal.任何适用于a的东西Dog都应适用于a Animal,否则就会出现设计问题.

但是如果你必须确定,那么调用getClass()(定义Object)来获取Class对象,然后将其与之进行比较Animal.class.

if (Animal.class == test.getClass())
Run Code Online (Sandbox Code Playgroud)