TL; TD在Java 8中,有一种接口默认方法来访问实例变量的方法吗?
例如:
public interface Foo{
default getBazModified(){
return baz * 2;
}
}
public class Bar implements Foo {
int baz;
...
}
Run Code Online (Sandbox Code Playgroud)
我知道这听起来像travisty但是有没有办法在Java 8中做类似的事情?
或者唯一的方法是有一个实现Foo的抽象类,它将声明实例变量baz并具有getBazModified()的默认实现?
接口不会"看到"其实现的实例字段.这不是特定于接口,任何超类型都不会知道其子类型的特定字段(或任何成员类型).
在这种情况下,您的解决方案是在接口中声明一个抽象的getter方法,并使用它来读取子类的属性:
public interface Foo{
default int getBazModified(){
return this.getBaz() * 2;
}
int getBaz();
}
Run Code Online (Sandbox Code Playgroud)
让具体类实现getter:
public class Bar implements Foo {
int baz;
public int getBaz() {return this.baz;}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |