【发布时间】:2019-04-02 04:09:09
【问题描述】:
界面:
public interface SomeInt{
Integer getX();
void setX(Integer value);
default Integer getY(){
return getX();
}
default void setY(Integer value){
setX(value);
}
}
一个类实现它:
public class A implements SomeInt{
private Integer x;
public Integer getX(){
return x;
}
public void setX(Integer value){
x = value;
}
}
初始化后,我可以调用getY & setY方法,得到正确的返回值。
但是我不能在 JSP(EL) 中使用它,比如${instance_of_class_a.y}。并且属性 Y 不在 IDEA 的变量列表中(调试模式)。
如果我在 A 类中显式添加 getY 和 setY,一切正常。 为什么?我认为默认方法就像一个编译器糖。
对不起,我的英语很差,代码中的错误,我已经更正了。
【问题讨论】:
-
因为你的班级没有任何名为
y的属性 -
您的代码错误。您如何在返回
String的getY()中返回Integer(getX())?此外,接口中的setX()没有参数,但您的覆盖有参数。这段代码甚至无法编译。 -
我已经编辑了代码。我确定原始源代码(有点复杂)已成功编译。而且我可以在 EL 中获取属性 X(或除 Y 之外的任何其他属性,该属性未在 classA 中显式声明(仅在 someInt 中定义为默认值)。
标签: java pojo default-method