Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lombok项目是否可以返回对象的接口?_Java_Annotations_Getter_Lombok - Fatal编程技术网

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

Java Lombok项目是否可以返回对象的接口?,java,annotations,getter,lombok,Java,Annotations,Getter,Lombok,Java只是一个很棒的东西。它提供了摆脱大量生成的getter/setter并使用简单、可理解的注释的可能性 但对于我的自动化项目,我应该返回一些元素的接口。lombok是否可以返回对象的接口 例如,我有: private ButtonElement button = new ButtonElement(....); public IElement getButton() { return button; } 我想要一些类似于: @Getter // with with IE

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

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

例如,我有:

private ButtonElement button = new ButtonElement(....);
public IElement getButton() {
     return button;
}  
我想要一些类似于:

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

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

我只需将您的代码更改为

@Getter      
private IElement button = new ButtonElement(....); 
是的,但它很笨拙:

@Getter
private IElement button = new ButtonElement(....);
但这当然会使访问
ButtonElement
的某些方法变得更加困难。因此,您可能需要使用以下任一选项:

private _button = new ButtonElement(....);
@Getter
private IElement button = _button;
i、 e.您需要两个字段,一个是接口字段,另一个是实类型字段

i、 您现在有了一个内部getter,它可以强制转换并返回实际类型

请注意,Java允许您定义一个扩展类型的方法。因此,如果你有一个
界面
,上面写着:

IElement getButton();
您可以使用

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

public ButtonElement getButton() {...}