NoSuchFieldException:这是一种反射异常,表示在尝试使用反射(通过类的属性,方法等信息)获取或访问一个不存在的字段(成员变量)时抛出的异常.例如,当使用"getField"或"getDeclaredField"方法来获取一个类的字段,但该字段在类中不存在时,就会抛出异常.
IllegalAccessException:这是一种访问权限异常,表示在尝试访问类的某个成员(字段,方法等)时,由于访问权限不足而无法成功访问.例如,如果尝试访问一个私有字段或方法,或者由于某种安全性限制而无法访问,就会导致"IllegalAccessException".
EasyPoi实现多语言国际化
下列方法中未写出如何国际化的具体逻辑,可根据自己项目实际情况做相应修改.
public static Class setExcelName (Class<?> entityClass) throws NoSuchFieldException, IllegalAccessException {
//获取实体类中全部字段
Field[] fields = entityClass.getDeclaredFields();
for (Field field : fields) {
//获取字段上的注解
Excel anoExcel = field.getAnnotation(Excel.class);
if (anoExcel != null) {
//获取代理处理器
InvocationHandler invocationHandler = Proxy.getInvocationHandler(anoExcel);
//获取私有memberValues属性
Field f = invocationHandler.getClass().getDeclaredField("memberValues");
f.setAccessible(true);
//获取实例的属性map
Map<String, Object> memberValues = (Map<String, Object>) f.get(invocationHandler);
//获取属性值
String excelName = (String) memberValues.get("name");
memberValues.put("name", newName);
}
}
return entityClass;
}