gpt4 book ai didi

Java 和动态类型

转载 作者:行者123 更新时间:2023-12-01 18:36:12 33 4
gpt4 key购买 nike

假设您有两个类(class):

public abstract class X {
public abstract void insert(Object item);
}

public class Y extends X {
protected Object a;
public void insert(Object item) {
a = item;
}
}

当您尝试以下操作时:

X x = new Y();
x.insert(5);

一切都很好。但是,当您还添加

x.a;

为什么你必须这样做:

((Y) x).a;

最后一行?

提前谢谢您!

最佳答案

However, shouldn't the compiler recognize that the dynamic type of x is actually Y?

不,编译器不会分析程序来确定变量的动态类型。在编译时,它仅适用于静态类型。

It seemed to understand this for the second line, since the insert method actually does end up giving x a value for "a".

方法解析是在运行时完成的,可以动态类型化。这不是编译器在做解析,而是运行时。

关于Java 和动态类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21922838/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com