Lombok项目是否可以返回对象的接口?

时间:2014-05-06 13:07:46

标签: java annotations getter lombok

Java Lombok Project只是一个很棒的东西。它提供了摆脱大量生成的getter / setter并使用简单,易于理解的注释的可能性。

但是对于我的自动化项目,我应该返回一些元素的接口。 lombok是否可以返回对象的接口?

例如,我有:

private ButtonElement button = new ButtonElement(....);
public IElement getButton() {
     return button;
}  

并希望有类似的内容:

@Getter   // with with IElement return type?   
private ButtonElement button = new ButtonElement(....); 

2 个答案:

答案 0 :(得分:1)

是的,但它很笨拙:

@Getter
private IElement button = new ButtonElement(....);

但这当然会让访问ButtonElement的某些方法变得更加困难。所以你可能想要使用:

private _button = new ButtonElement(....);
@Getter
private IElement button = _button;

即。你需要两个字段,一个带接口,另一个带真实类型。

@Getter
private IElement button = new ButtonElement(....);
private ButtonElement button() { return (ButtonElement) button; }

即。你现在有一个内部的getter,它会转换并返回真实的类型。

请注意,Java允许您定义扩展类型的方法。所以如果你有一个interface说:

IElement getButton();

您可以使用

实现此目的
public ButtonElement getButton() {...}

这不仅会起作用,而且如果Java知道你正在调用哪个getButton(),它会很高兴地给你一个ButtonElement

答案 1 :(得分:0)

如果您将字段类型定义为界面,它当然会返回界面,否则,我认为没有办法。

我只想将您的代码更改为

@Getter      
private IElement button = new ButtonElement(....);