取得和配置字段值

当给了一个类的实例时,它可以去使用映射去配置这个类字段的值.如果在正常的情况下不可用时,这将会为我们完成工作.如下:

import java.lang.reflect.Field;
import java.util.Arrays;
import static java.lang.System.out;

enum Tweedle {DEE,DUM}

public class Book {
public long chapters = 0;
public String[] characters = {"Alice", "White Rabbit"};
public Tweedle twin = Tweedle.DEE;

public static void main(String... args) {
Book book = new Book();
String fmt = "%6s: %-12s = %s%n";

try {
Class<?> c = book.getClass();
Field chap = c.getDeclaredField("chapters");
out.format(fmt, "before", "chapters",book.chapters);
chap.setLong(book,12);
out.format(fmt,"after","chapters",chap.getLong(book));

Field chars = c.getDeclaredField("characters");
out.format(fmt,"before","characters",Arrays.asList(book.characters));
String[] newChars = {"Queen","King"};
chars.set(book,newChars);
out.format(fmt,"after","characters",Arrays.asList(book.characters));
Field t = c.getDeclaredField("twin");
out.format(fmt,"before","twin",book.twin);
t.set(book,Tweedle.DUM);
out.format(fmt,"after","twin",t.get(book));
} catch(NoSuchFieldException x) {
x.printStackTrace();
} catch(IllegalAccessException x) {
x.printStackTrace();
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值