- 类似于中国网络有堵墙一样,封装就好比那堵墙,但是反射中的一个方法,就是那个凿洞的锤子:
titleField.setAccessible(true);
证明:实例化对象增加了一个新的方法-----反射:
package cn.dujiang.demo;
import java.lang.reflect.Field;
/**
* public class TestDemo {
public static void main(String[] args) throws Exception {
Class<?> cls = Class.forName("cn.dujiang.next.Food") ;
Object obj = cls.newInstance();//必须给出实例化对象
Field titleField = cls.getDeclaredField("title") ;
titleField.set(obj,"鱼香肉丝"); //相当于,Food类对象.title = "鱼香肉丝";
System.out.println(titleField.get(obj));//相当于,Food类对象.title
}
}
以上程序会报错。但是可以解决 titleField.setAccessible(true);//封装取消了
* @author Dujiang
*
*/
public class TestDemo {
public static void main(String[] args) throws Exception {
Class<?> cls = Class.forName("cn.dujiang.next.Food") ;
Object obj = cls.newInstance();//必须给出实例化对象
Field titleField = cls.getDeclaredField("title") ;
titleField.setAccessible(true);//封装取消了
titleField.set(obj,"鱼香肉丝"); //相当于,Food类对象.title = "鱼香肉丝";
System.out.println(titleField.get(obj));//相当于,Food类对象.title
}
}
很多人都和我说过,千万不要用汉化版的Eclipse等编程工具,你可能看到有的教学视频中用汉化版,很强,你也想试试,其实这完全是在给自己挖坑,不适合开发的,建议所有人,本着国际化原则,用最新英文原版的eclipse