理解反射

      看网上说反射是java的一大创举,有种说法叫“接口加反射,什么都能做”(暂时还没体会到)。但是刚刚一接触却感觉是一头雾水,学完之后才算有点眉目了。由于反射功能的存在使得java的所有的类和对象都具有了“自省”功能,哇这个名字不知道是谁给起的,用在这里太合适了,儒家说“见贤思齐,见不自省也”,在佛家这叫“返观内照”,用途在于从外界收回心神,观察自心,见自本性,从而不被外境所迷。呵呵扯远了,有了反射,类和对象就有了“返观内照”的本事。我试着简单的说明反射存在的必要。

看例子class a{//先来一个类

public int i = 8;

public void seti(int i){this.i = i;}

public int geti(){return I;}

}

                     直接调用

                     public class t1{

                                public static void main(String[] args){

a o = new a();

int i = o.geti();

System.out.println(i);

}           

}

                     我在网上查到像这样把代码编好,把类名对象名都写死在程序里,要修改是就要到程序里修改相应的项的方式叫做硬编码,像平常学习时编的小程序用硬编码当然是很简单的,但是再实际工作中面对海量的代码,程序的运行过程也非常复杂,程序的编译,打包,部署,配置,服务器的重新启动,如果程序要反复的修改代码调试的话就会相当不方便。于是反射就大有用武之地了。

反射调用

                     public class t2 {

                                public static void main(){

                                       a o = new a();

                                   Field f = o.getClass().getField(“i”);

                                    System.out.println(f.getInt(o));

}        

}

诸如此类,可以用java.lang.Classjava.lang.reflect中的方法对类和对象进行各种操作,反射也并不神秘了,也不过是调用reflect中的方法来实现,与其他的方法调用一样。当然在课堂上张老师讲述了更多具体的例子,实现了更复杂的功能,我认为把复杂的例子记在脑子里是不明智的,因为再复杂的程序也是各个简单方法的重复运用而已,所以我只记住最简单的功能实现的例子。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值