【发布时间】:2015-02-06 22:40:12
【问题描述】:
我有以下抽象 Java 类:
abstract class AbstractDto {
String id;
public void setId(String id) { this.id = id; }
public String getId() {return id; }
}
我也有扩展抽象类的类:
class SomeDto extends AbstractDto {
@SomeAnnotation
String id;
}
我想注释从抽象类派生的实例变量。我不确定这是否是我这样做的方式。我知道 Java 不提供变量重载,所以这是阴影。
如果我这样做会发生什么:
public void go(AbstractDto dto) {
println("dto.id: "+dto.id);
}
AbstractDto dto = new SomeDto();
dto.setId("1234");
go(dto);
由于我在设置 SomeDto 的 id 时进行了遮蔽,所以有一个从 AbstractDto 继承的 idvariable 仍未设置。
如何注释定义在抽象超类中的实例变量?
编辑:当我这样做时:
SomeDto dto = new SomeDto();
dto.setId("123");
哪个 id 设置在 AbstractDto 或 SomeDto 中? Abstract 类中的方法从 id 读取然后使用哪个 id 会发生什么?
【问题讨论】:
-
这里唯一的派生是类本身。派生类中的
id变量不是派生、继承等。
标签: java inheritance annotations