自做网站教程,成人职业技能培训学校,计算机网站建设职业群,网站文章怎么做才能被快速收录反射是通过字节码来还原类的相关特性,我们可以通过字节码来反射属性,方法,new对象,同一类型的JAVA在内存中存在同一份字节码 字节码获取方式类.class 、对象.getClass、Class.forName(String str);Field Method Construct等反射… 反射是通过字节码来还原类的相关特性,我们可以通过字节码来反射属性,方法,new对象,同一类型的JAVA在内存中存在同一份字节码 字节码获取方式类.class 、对象.getClass、Class.forName(String str); Field Method Construct等反射类 举例 通过反射替换字符串中的b为a import java.lang.reflect.Field;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue; public class ThreadTest {
public static void main(String[] args)throws Exception{
Object obj = Class.forName("Person").newInstance();//因不知道你要传来的实际类所以用此种方式来加载一个类并实例
changeString(obj);//调用转换方法
Field field=obj.getClass().getDeclaredField("str");//因为obj同一个实例引用对象,所以调用反射方法进行修改值后可再次反射调用,因为他们用的是同一实例内容都一样,这个问题在反射中困扰我至今天才明白
field.setAccessible(true);
System.out.println(field.get(obj));;
}
public static void changeString(Object obj)throws Exception{
Class cls = obj.getClass();
Field [] fields = cls.getDeclaredFields();
for(Field f: fields){
f.setAccessible(true);
if(f.getType() ==String.class){
String str = (String)f.get(obj);
String newstr = str.replace("b", "a");
f.set(obj, newstr);
}
}
}
}
class Person{
private String str="bba p";
@Override
public String toString(){
return str+"";
}
public String print(String str){
return str;
}
} 1、基本数据类型数组父类是object , 以上知识看了传智博客后才明白过来, 待续........................................................................
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue; public class ThreadTest {
public static void main(String[] args)throws Exception{
Object obj = Class.forName("Person").newInstance();//因不知道你要传来的实际类所以用此种方式来加载一个类并实例
changeString(obj);//调用转换方法
Field field=obj.getClass().getDeclaredField("str");//因为obj同一个实例引用对象,所以调用反射方法进行修改值后可再次反射调用,因为他们用的是同一实例内容都一样,这个问题在反射中困扰我至今天才明白
field.setAccessible(true);
System.out.println(field.get(obj));;
}
public static void changeString(Object obj)throws Exception{
Class cls = obj.getClass();
Field [] fields = cls.getDeclaredFields();
for(Field f: fields){
f.setAccessible(true);
if(f.getType() ==String.class){
String str = (String)f.get(obj);
String newstr = str.replace("b", "a");
f.set(obj, newstr);
}
}
}
}
class Person{
private String str="bba p";
@Override
public String toString(){
return str+"";
}
public String print(String str){
return str;
}
} 1、基本数据类型数组父类是object , 以上知识看了传智博客后才明白过来, 待续........................................................................