嗨,伙计们,我有个小问题。我有这个:
public class Animal {
//omitted
}
public class Dog extends Animal {
private int speed;
}
现在我有了另一个类,它生成一个迭代器,并将它的所有对象强制转换为动物对象。
while(it.hasNext()) {
Animal animal = (Animal) it.next();
}
检查动物是否是狗
,然后强制转换它
if (animal instanceof Dog) {
((Dog)animal).getSpeed();
}
我理解超类/子类之间的关系以及强制转换是如何工作的。但是,我的问题是,如果知道中间有一个类,你能把一个超类转换成一个特定的子类吗?例如,如果我有一个动物类对象包含一个BigDog对象,我可以将该对象强制转换为Dog吗?如果BigDog中有Dog中不存在的方法怎么办? 简而言之,你当然可以说超类对象是子类对象,但为什么你可以反转呢? 转念一想, Java在调用方法时检查的是:引用(DOG)是否有引用
问题内容: 考虑这种情况。 有地块,有的是住宅用地,有的是商业用地。 也有所有者。但是所有者只能购买一块土地,并且可以是住宅或商业用地。 所以,这是我的代码。 一切运作良好,但是当我打电话 ,我期待或实例,这样,我可以通过采取适当的操作符。但是它不能同时满足这两个条件! 我究竟做错了什么? 问题答案: 您没有使用多态,它在JPA环境中的危害更大。 观察到此行为的原因是由于Hibernate使用了代
问题内容: 我有一些这样的代码。 超级班 子类 所以问题是我可以将超类的对象转换为子类吗?这个问题对我来说是正确的吗? 但它给Class Cast异常。 问题答案: 您可以将子类转换为超级类,反之亦然。如果“车辆”是“超级类”,而“汽车”是子类,则所有“汽车”(子代)都是“汽车”(“超级”),但并非所有“车辆”都是“汽车”。
问题内容: 我希望结果是: 汽车通话方式:红色 宝马的致电方式:颜色为黑色 汽车通话方式:颜色为黑色 但是,我得到的结果是: 汽车通话方式:红色 宝马的致电方式:颜色为黑色 宝马的致电方式:颜色为黑色 我哪里错了?以及如何使用超类中的方法在子类对象中获取数据?我可以在BMW课堂上写一个方法来做到这一点。但是,为什么强制转换不起作用?谢谢你! 好!谢谢! 我明白了为什么投射不起作用。 因此,我在BM
问题内容: 说我有一个像这样的父接口/类 还有许多实现通用类型的实现接口。 我可以使用反射来获取的情况下代表我有没有为对象。像这样: 目前,我已经作为参数传递了,但是如果可以的话,我想简化一些事情。 问题答案: 是的,尽管什么其他人说,这个信息 是 可用的,如果你有机会到子类对象。您需要与一起使用。 在您的示例中,“实际”类型参数应返回for 。
是的数组列表。有两个子类,比如。这里我试图将一个投射物传递到另一个函数中。 我的问题是,当将的一个实例传递到此函数中时,它不是转到而是转到。如何让对象作为其特定子类的实例传递?