This commit is contained in:
Looly 2022-09-21 18:58:52 +08:00
parent a74fa1e7f5
commit de4cc16454
2 changed files with 30 additions and 32 deletions

View File

@ -267,20 +267,18 @@ public class ModifierUtil {
/** /**
* 设置final的field字段可以被修改 * 设置final的field字段可以被修改
* <p> * 只要不会被编译器内联优化的 final 属性就可以通过反射有效的进行修改 -- 修改后代码中可使用到新的值;
* 只要不会被编译器内联优化的 final 属性就可以通过反射有效的进行修改 -- 修改后代码中可使用到新的值; * <p>以下属性编译器会内联优化无法通过反射修改</p>
* <p>以下属性编译器会内联优化无法通过反射修改</p> * <ul>
* <ul> * <li> 基本类型 byte, char, short, int, long, float, double, boolean</li>
* <li> 基本类型 byte, char, short, int, long, float, double, boolean</li> * <li> Literal String 类型(直接双引号字符串)</li>
* <li> Literal String 类型(直接双引号字符串)</li> * </ul>
* </ul> * <h3>以下属性可以通过反射修改</h3>
* <h3>以下属性可以通过反射修改</h3> * <ul>
* <ul> * <li>基本类型的包装类 ByteCharacterShortLongFloatDoubleBoolean</li>
* <li>基本类型的包装类 ByteCharacterShortLongFloatDoubleBoolean</li> * <li>字符串通过 new String("")实例化</li>
* <li>字符串通过 new String("")实例化</li> * <li>自定义java类</li>
* <li>自定义java类</li> * </ul>
* </ul>
* </p>
* <pre class="code"> * <pre class="code">
* {@code * {@code
* //示例移除final修饰符 * //示例移除final修饰符
@ -288,12 +286,13 @@ public class ModifierUtil {
* Field field = ReflectUtil.getField(JdbcDialects.class, fieldName); * Field field = ReflectUtil.getField(JdbcDialects.class, fieldName);
* ReflectUtil.removeFinalModify(field); * ReflectUtil.removeFinalModify(field);
* ReflectUtil.setFieldValue(JdbcDialects.class, fieldName, dialects); * ReflectUtil.setFieldValue(JdbcDialects.class, fieldName, dialects);
* } * }
* </pre> * </pre>
*
* @param field 被修改的field不可以为空 * @param field 被修改的field不可以为空
* @throws UtilException IllegalAccessException等异常包装 * @throws UtilException IllegalAccessException等异常包装
* @since 5.8.8
* @author dazer * @author dazer
* @since 5.8.8
*/ */
public static void removeFinalModify(Field field) { public static void removeFinalModify(Field field) {
if (field != null) { if (field != null) {

View File

@ -1112,20 +1112,18 @@ public class ReflectUtil {
/** /**
* 设置final的field字段可以被修改 * 设置final的field字段可以被修改
* <p> * 只要不会被编译器内联优化的 final 属性就可以通过反射有效的进行修改 -- 修改后代码中可使用到新的值;
* 只要不会被编译器内联优化的 final 属性就可以通过反射有效的进行修改 -- 修改后代码中可使用到新的值; * <p>以下属性编译器会内联优化无法通过反射修改</p>
* <p>以下属性编译器会内联优化无法通过反射修改</p> * <ul>
* <ul> * <li> 基本类型 byte, char, short, int, long, float, double, boolean</li>
* <li> 基本类型 byte, char, short, int, long, float, double, boolean</li> * <li> Literal String 类型(直接双引号字符串)</li>
* <li> Literal String 类型(直接双引号字符串)</li> * </ul>
* </ul> * <h3>以下属性可以通过反射修改</h3>
* <h3>以下属性可以通过反射修改</h3> * <ul>
* <ul> * <li>基本类型的包装类 ByteCharacterShortLongFloatDoubleBoolean</li>
* <li>基本类型的包装类 ByteCharacterShortLongFloatDoubleBoolean</li> * <li>字符串通过 new String("")实例化</li>
* <li>字符串通过 new String("")实例化</li> * <li>自定义java类</li>
* <li>自定义java类</li> * </ul>
* </ul>
* </p>
* <pre class="code"> * <pre class="code">
* {@code * {@code
* //示例移除final修饰符 * //示例移除final修饰符
@ -1133,12 +1131,13 @@ public class ReflectUtil {
* Field field = ReflectUtil.getField(JdbcDialects.class, fieldName); * Field field = ReflectUtil.getField(JdbcDialects.class, fieldName);
* ReflectUtil.removeFinalModify(field); * ReflectUtil.removeFinalModify(field);
* ReflectUtil.setFieldValue(JdbcDialects.class, fieldName, dialects); * ReflectUtil.setFieldValue(JdbcDialects.class, fieldName, dialects);
* } * }
* </pre> * </pre>
*
* @param field 被修改的field不可以为空 * @param field 被修改的field不可以为空
* @throws UtilException IllegalAccessException等异常包装 * @throws UtilException IllegalAccessException等异常包装
* @since 5.8.8
* @author dazer * @author dazer
* @since 5.8.8
*/ */
public static void removeFinalModify(Field field) { public static void removeFinalModify(Field field) {
ModifierUtil.removeFinalModify(field); ModifierUtil.removeFinalModify(field);