英文:
Turn an object of Object into an object of different type?
问题
不确定问题是否有意义,但基本上我要做的是这样的:
Object obj = new Object();
BankAccount s = (BankAccount) obj;
System.out.println(s instanceof BankAccount);
我希望这返回true,但它抛出一个类转换异常错误。为什么我不能将BankAccount
转换为Object
?是因为BankAccount
自动成为Object
的子类吗?
英文:
Not sure if the question makes sense, but basically what I'm trying to do is this
Object obj = new Object();
BankAccount s = (BankAccount) obj;
System.out.println(s instanceof BankAccount);
I want this to return true, but it throws me a class cast exception error. Why can I not cast BankAccount
to Object
? Is it because BankAccount
is automatically a subclass of Object
?
答案1
得分: 3
类型转换在告诉编译器:“你认为这个 obj
的类型是 Object
,但请相信我,它实际上是一个 BankAccount
”。但事实是,你在那方面撒了谎,因为它并不是。该实例只是一个 Object
。下面的代码是有效的:
Object obj = new BankAccount();
BankAccount s = (BankAccount) obj;
System.out.println(s instanceof BankAccount);
英文:
The type cast is telling the compiler "you think this obj
has type Object
, but trust me, it is actually a BankAccount
". But you were lying about that, because it wasn't. The instance was only an Object
.
The following would work:
Object obj = new BankAccount();
BankAccount s = (BankAccount) obj;
System.out.println(s instanceof BankAccount);
答案2
得分: 1
除了Henry的评论解释了你可以执行以下操作:
Object obj = new BankAccount();
BankAccount s = (BankAccount) obj;
System.out.println(s instanceof BankAccount);
你应该始终记住,变量就像是一种遥控器。
第一行使用一个Object
遥控器来控制一个BankAccount
。这是可能的,因为所有东西都是一个Object
... 这意味着你可以使用这个遥控器来控制所有对象。但你还会注意到,这个遥控器只支持在Object
类中定义的操作,这意味着所有的Object
都有这些操作。
等式右边的第二行声明了引用的Object
实际上是一个BankAccount
。在等式的左边,你强制创建一个新的遥控器,可以控制BankAccount
对象。
英文:
In addition to Henry's comment who explained that you could do the following:
Object obj = new BankAccount();
BankAccount s = (BankAccount) obj;
System.out.println(s instanceof BankAccount);
You should always keep in mind that variables are some kind of remote control.
The first line uses a Object
remote control to control a BankAccount
. This is possible because everything is an Object
... this means you can use this remote control to control all objects. But you will also see that this control only supports operations that are defined in the Object
class which means all Objects
have.
The second line at the right side of the equation states that the referenced Object
is actually a BankAccount
. On the left side of the equation you force to create a new remote control that is able to control BankAccount
objects.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论