Java 通過反射變更String的值過程詳解
更新時間:2019年10月09日 09:20:47 作者:小龍_T無限
這篇文章主要介紹了Java 通過反射變更String的值過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
目的
變更String對象里面的值
方法
采用反射技術(shù),獲取String里面的值,并改變
代碼
通過反射技術(shù)替換掉String里面的值
package com.pojo;
import java.lang.reflect.Field;
/**
* @auther::9527
* @Description: 修改String的內(nèi)容
* @program: jstl2
* @create: 2019-10-03 19:02
*/
public class ChangeString {
public static void main(String[] args) throws Exception {
String str = new String("abc");
System.out.println("輸出原本str的內(nèi)容:" + str);
//1、獲取String類對應(yīng)的Class
Class<? extends String> clazz = str.getClass();
//2、通過clazz獲取類中的value屬性
Field value = clazz.getDeclaredField("value");
//3、需要設(shè)置私有屬性可以被操作后才能操作屬性值
value.setAccessible(true);
//4、獲取value屬性里面的值(內(nèi)存地址)
//由于 String里面的值是存放在char[] 數(shù)組里面的,所以需要用一個char[]接收
char[] temp = (char[])value.get(str);
//5、通過temp的地址引用 找到真實String對象中的數(shù)組,修改數(shù)組內(nèi)的每一個元素
//由于此處是char類型,所以要用單引號
temp[0] = '北';
temp[1] = '京';
temp[2] = '冷';
System.out.println("反射操作過后的str內(nèi)容:"+str);
}
}
運行結(jié)果

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot進行Web開發(fā)的實現(xiàn)
Spring?Boot讓我們可以快速構(gòu)建項目并運行web應(yīng)用,大大簡化了Spring的復(fù)雜配置,本文主要介紹了SpringBoot進行Web開發(fā)的實現(xiàn),感興趣的可以了解一下2023-10-10
詳解Java中的println輸入和toString方法的重寫問題
這篇文章主要介紹了Java中的println輸入和toString方法的重寫,一個對象數(shù)組在調(diào)用Arrays.toString打印時,相當于遍歷數(shù)組,然后打印里邊每個對象,這再打印對象就調(diào)用對象自己的toString了,需要的朋友可以參考下2022-04-04
淺談SpringBoot項目如何讓前端開發(fā)提高效率(小技巧)
這篇文章主要介紹了淺談SpringBoot項目如何讓前端開發(fā)提高效率(小技巧),主要介紹了Swagger和Nginx提高效率的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
淺談java中類名.class, class.forName(), getClass()的區(qū)別
下面小編就為大家?guī)硪黄獪\談java中類名.class, class.forName(), getClass()的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
關(guān)于Java利用反射實現(xiàn)動態(tài)運行一行或多行代碼
這篇文章主要介紹了關(guān)于Java利用反射實現(xiàn)動態(tài)運行一行或多行代碼,借鑒了別人的方法和書上的內(nèi)容,最后將題目完成了,和大家一起分享以下解決方法,需要的朋友可以參考下2023-04-04
Java操作MongoDB數(shù)據(jù)庫的示例代碼
這篇文章主要介紹了Java操作MongoDB的示例代碼,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-04-04

