java - 自动为变量生成某些方法

标签 java variables methods automation

我有一个问题,如果可能的话,如何通过仅提供特定类型的变量来自动生成方法。

让我们用简单的例子来说明我的问题: 假设我有多个链接到 LinkedLists 的变量,我想给每个特定的方法;例如 setter 和 getter 方法:

private LinkedList football = new LinkedList();
private LinkedList jogging = new LinkedList();

public LinkedList getFootball() {
    return football;
}
public void setFootball(LinkedList football) {
    this.football = football;
}
public LinkedList getJogging() {
    return jogging;
}
public void setJogging(LinkedList jogging) {
    this.jogging = jogging;
}

如果变量的数量变长(示例仅包含 2 个),这将产生非常长且相当重复的代码和平,如上所示。

如果确实有可能,是否有任何方法可以概括上述模式,以便我可以通过创建 LinkedList 的实例来创建这两种方法?

P.S.:使用 foreach 循环并将其推广到任意元素是行不通的。

最佳答案

您可能正在寻找 Lombok :

You can annotate any field with @Getter and/or @Setter, to let lombok generate the default getter/setter automatically.

A default getter simply returns the field, and is named getFoo if the field is called foo (or isFoo if the field's type is boolean).

在你的例子中,这个类

@Getter
@Setter
public class MyClass {
    private LinkedList football = new LinkedList();
    private LinkedList jogging = new LinkedList();
}

将导致以下代码:

public class MyClass {
    private LinkedList football = new LinkedList();
    private LinkedList jogging = new LinkedList();

    public LinkedList getFootball() {
        return football;
    }

    public void setFootball(LinkedList football) {
        this.football = football;
    }

    public LinkedList getJogging() {
        return jogging;
    }

    public void setJogging(LinkedList jogging) {
        this.jogging = jogging;
    }
}

然而, Lombok requires some compiler configuration , 所以当你在做的时候,你不妨考虑看看 Kotlin ,你的类可以简单地写成这样:

class MyClass {
    var football = LinkedList<Any?>()
    var jogging = LinkedList<Any?>()
}

关于java - 自动为变量生成某些方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46446644/

相关文章:

java - Java 是 "pass-by-reference"还是 "pass-by-value"?

javascript - 如何从 html 向 javascript 方法发送一些值并使用它们

java - youTube 数据 API V3 - 使用 PublishedAfter 时搜索返回错误 400

java - "<T> Future<T> submit(Callable<T> task)"中的第一个 <T> 代表什么?

java - 不同类之间访问同一个方法?

iphone - 如何调用采用可变数量参数的方法的父类(super class)实现,如 [UIAlertView initWithTitle ...]?

json - 呈现为JSON时Grails中缺少方法异常

java - 如何仅使用核心 Java 获取异常的所有原因?

python - 我正在更改一个变量,但是如何在函数结束时返回它的原始状态?

xml - SSIS 如何从变量传递 XSD 路径