新聞中心
利用java反射改一下任意對象的屬性值的編碼。比如說Student對象的name值原來是GBK的,然后改成utf-8的
只要不是final的,都可以改
創(chuàng)新互聯(lián)公司基于成都重慶香港及美國等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動(dòng)大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務(wù)器托管報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)綿陽電信機(jī)房機(jī)柜租用,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。
問題是,編碼不能改。
java內(nèi)部都是unicode編碼。
輸出默認(rèn)都是utf8
你要是想改編碼,就在輸出的時(shí)候重新編碼一下就可以了。不用反射。
用java實(shí)現(xiàn)類和對象的反射,代碼最好有注釋,謝謝
給你一個(gè)小的實(shí)例代碼:
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
public class test {
public static void main(String args[]) throws NoSuchMethodException,
IllegalAccessException, InvocationTargetException {
Foo foo = new Foo("這個(gè)一個(gè)Foo對象!");
Class clazz = foo.getClass();
Method m1 = clazz.getDeclaredMethod("outInfo");
Method m2 = clazz.getDeclaredMethod("setMsg", String.class);
Method m3 = clazz.getDeclaredMethod("getMsg");
m1.invoke(foo);
m2.invoke(foo, "重新設(shè)置msg信息!");
String msg = (String) m3.invoke(foo);
System.out.println(msg);
}
}
class Foo {
private String msg;
public Foo(String msg) {
this.msg = msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void outInfo() {
System.out.println("這是測試Java反射的測試類");
}
}
JAVA反射機(jī)制代碼
1.就是說根據(jù)你傳進(jìn)去的對象類型返回相應(yīng)的代理。這個(gè)不是在靜態(tài)編譯時(shí)決定的, 而是運(yùn)行時(shí)決定的,所以叫做動(dòng)態(tài)。this指的是當(dāng)前InvocationHandler對象,也就是new MyInvocationHandler()出來的。
2.執(zhí)行RealSubject中的say方法,因?yàn)檫@個(gè)時(shí)候?qū)嶋H的對象是bind(new RealSubject())。
3.沒有調(diào)用自己啊。
分享文章:java反射更改代碼 java反射method invoke
鏈接地址:http://www.ef60e0e.cn/article/ddihdeo.html