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

本文介绍了一种方法,通过Java反射机制,实现针对LinkedList类型的变量,自动生成getter和setter方法,以减少代码冗余。通过提供变量名,可以快速生成针对不同LinkedList的操作接口。
摘要由CSDN通过智能技术生成

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

让我们用简单的例子说明我的问题:

假设我有多个链接到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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值