自动为变量生成某些方法

Mor*_*ina 3 java variables methods automation

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

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

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;
}
Run Code Online (Sandbox Code Playgroud)

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

有没有办法,如果这确实是一个可能性,概括上面的模式,所以我可以通过创建LinkedList的实例创建两个方法?

PS:使用foreach循环并将其概括为任意元素不起作用.

use*_*902 7

您可能正在寻找龙目岛:

您可以使用@Getter和/或@Setter注释任何字段,让lombok自动生成默认的getter/setter.

默认的getter只返回字段,如果字段名为foo,则命名为getFoo(如果字段的类型为boolean,则命名为isFoo).

在你的情况下,这个类

@Getter
@Setter
public class MyClass {
    private LinkedList football = new LinkedList();
    private LinkedList jogging = new LinkedList();
}
Run Code Online (Sandbox Code Playgroud)

会导致以下代码:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,Lombok 需要一些编译器配置,所以当你在它的时候,你也可以考虑查看Kotlin,你的类可以简单地写成:

class MyClass {
    var football = LinkedList<Any?>()
    var jogging = LinkedList<Any?>()
}
Run Code Online (Sandbox Code Playgroud)


Hae*_*aem 6

你不能在运行时这样做.但是,很多IDE都可以选择自动生成getter和setter.

例如,在Eclipse中,左键单击打开上下文菜单,在"Source"下查看,或按Alt+ Shift+ s打开源菜单.在那里你会找到一个标记为"Generate Getters and Setters"的选项,它会打开一个对话框按钮,让你选择要创建的setter和getter,在代码中将它们插入的位置等等.