Java 如何注释从抽象类派生的实例变量?
我有以下抽象Java类:Java 如何注释从抽象类派生的实例变量?,java,inheritance,annotations,Java,Inheritance,Annotations,我有以下抽象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; } 我想注释一个从抽象类派
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继承了一个id
变量,该变量仍然没有设置
如何注释抽象超类中定义的实例变量? 编辑:当我这样做时:
SomeDto dto = new SomeDto();
dto.setId("123");
哪个id设置为AbstractDto中的id还是SomeDto中的id?
如果抽象类中的方法从id中读取然后使用哪个id,会发生什么情况?您提供的示例称为阴影,Java中的字段没有重写 有关阴影的更多信息,请参见: 在计算机编程中,当一个变量 在特定范围内声明(决策块、方法或内部 类)与外部作用域中声明的变量具有相同的名称 因此,要使用注释,您可以在抽象类中注释
id
变量(所有继承的类都可以使用该注释变量),或者只注释SomeDto的id
变量,但您必须知道它是一个新变量(与id的超类变量没有关系)
关于第二个问题:
哪个id设置为AbstractDto中的id还是SomeDto中的id
SomeDto的id将被设置,因为dto
的参考变量类型是SomeDto
。为了进一步解释,在继承的类SomeDto
中,您定义了另一个id
变量,该变量隐藏了第一个变量,因此使用对该类或任何继承的SomeDto
类的引用的每次调用都将调用SomeDto
类中定义的新id
变量
当抽象类中的方法从哪个id读取时会发生什么
然后是什么
抽象类中对id
的每次调用都将使用抽象类中的id
,因此在AbstractDto
中实现并使用变量id
的方法将使用AbstractDto
一个
注释抽象超类中定义的实例变量:
这是一些对抽象类的实例变量进行注释的实际示例:
它被称为。这可能会有帮助:这里唯一的派生是类本身。派生类中的id
变量不是派生的、继承的等。请查看我的编辑:哪个id被设置为AbstractDto中的id还是SomeDto中的id?当抽象类中的方法从id中读取然后使用哪个id时,会发生什么情况?@confile这是回答您的问题还是您有其他问题?请随便问我,我可以注释抽象超类中定义的实例变量吗?这样抽象类仍然可以使用变量。@confile只需像任何实例变量一样对其进行注释,无论该类是否抽象,都可以找到示例或