首页 > 编程知识 正文

java静态变量初始化,java set方法

时间:2023-05-06 14:32:03 阅读:132028 作者:4413

try {

Class clazz=str.getClass (;

field field=clazz.getdeclaredfield (' value );

field.set accessible (真;

objectobj=field.get(str );

char [] charValue=(char [] ) obj;

charValue=new char [3];

for(intI=0; I

charValue[i]='a ';

}

Field.set(str,charValue );

}catch(exceptione ) {

e .打印堆栈跟踪(;

}

}我发现能满足我的要求。 代码charValue=new char [4],因为该值已更改,且希望更改长度;

意识到值不能更改,继续阅读字符串源代码,发现有count属性。 因此,将该值代码变更如下

try {

Class clazz=str.getClass (;

field field=clazz.getdeclaredfield (' value );

field.set accessible (真;

objectobj=field.get(str );

char [] charValue=(char [] ) obj;

charValue=new char [4];

for(intI=0; I

charValue[i]='a ';

}

field field1=clazz.getdeclaredfield (' count );

字段1.set accessible (true );

Field1.set(str,charValue.length );

Field.set(str,charValue );

}catch(exceptione ) {

e .打印堆栈跟踪(;

}

}

发现可以解决问题。

我又试了一下

然后再尝试一下Integer,我们发现我们可以做同样的事情。

代码为以下:

静态语音切换指示器(integera ) {

try {

Class clazz=a.getClass (;

field field=clazz.getdeclaredfield (' value );

field.set accessible (真;

Field.set(a,12312;

}catch(exceptione ) {

e .打印堆栈跟踪(;

}

}

个人为field.setaccessible(true ); 然后,还可以访问用final关键字标记的属性! 这样的反射可以改变JAVA的结构,甚至可以改变代码的可维护性

因为要更改另一个代码中的值,所以这是一个简单的例子。 只是验证通过反射可以做出无法想象的东西。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。