我有一个问题,如果可能的话,如何通过仅提供特定类型的变量来自动生成方法。
让我们用简单的例子来说明我的问题: 假设我有多个链接到 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/