我有一个问题,如果可能的话,如何通过仅提供特定类型的变量来自动生成方法.
让我们用简单的例子说明我的问题:
假设我有多个链接到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;
}
如果变量的数量变长(例子只包含2),这将产生非常长且相当重复的代码和平,如上所示.
有没有办法,如果这确实是一个可能性,概括上面的模式,所以我可以通过创建LinkedList的实例创建两个方法?
P.S.:使用foreach循环并将其概括为任意元素不起作用.
解决方法:
您要求various sorts of trouble具有代码可读性,优化和丢失封装,更不用说丢失正确变量名称的编译时检查.无论如何,您可以通过这样的反射创建一个通用的setter和getter(在本例中为LinkedLists):
public void setter(String name, LinkedList value) throws IllegalArgumentException {
try {
Field field = getClass().getDeclaredField(name);
field.setAccessible(true);
field.set(this, value);
field.setAccessible(false);
} catch (NoSuchFieldException | IllegalAccessException e) {}
}
public LinkedList getter(String name) {
LinkedList ret = null;
try {
Field field = getClass().getDeclaredField(name);
field.setAccessible(true);
Object object = field.get(this);
if (object instanceof LinkedList) {
ret = (LinkedList) object;
}
field.setAccessible(false);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
return ret;
}
标签:java,methods,variables,automation
来源: https://codeday.me/bug/20190712/1443264.html