0

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

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

例如,我有:

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

并希望有类似的东西:

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

2 回答 2

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 允许您定义扩展类型的方法。所以,如果你有一个interfacewhich 说:

IElement getButton();

你可以用

public ButtonElement getButton() {...}

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

于 2014-05-06T13:15:49.363 回答
0

如果将字段类型定义为接口,那么它当然会返回接口,否则,我认为没有办法。

我只需将您的代码更改为

@Getter      
private IElement button = new ButtonElement(....); 
于 2014-05-06T13:14:56.867 回答