疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

java动态与反射的基本原理及实际应用


 

         在研究java反射机制,先了解动态绑定,动态是相对于静态来说的。二者的区别主要在于创建对象的时间不一同,静态绑定是编译时创建对象,而动态绑定是在运行时创建对象。

  我们先创建一个简单的MyFruit接口。

  Java代码

  package Fruit;

  public interface MyFruit{

  public void eat();

  }

  静态绑定代码示例:

  Java代码

  package Fruit;

  public class Apple implements MyFruit{

  public void eat(){

  System.out.println("eat an apple");

  }

  public static void main(String args[]){

  Apple a=new Apple();

  a.eat();

  }

  }

  动态绑定代码示例:

  Java代码

  package Fruit;

  public class Orange implements MyFruit{

  public void eat() {

  System.out.println("eat an orange");

  }

  public static void main(String args[]){

  try {

  Class o= Class.forName("Fruit.Orange");

  Object object=o.newInstance();

  Orange o1=(Orange)object;

  o1.eat();

  } catch (ClassNotFoundException e) {

  e.printStackTrace();

  } catch (InstantiationException e) {

  e.printStackTrace();

  } catch (IllegalAccessException e) {

  e.printStackTrace();

  }

  }

  }

  理解了动态与静态的概念,下面我们开始步入正题,了解构建框架技术的基础:反射机制(Reflection)。什么是框架技术呢?其实就是半成品,简单地说就是别人搭好的舞台,由你来表演。(当然,搭舞台的一般都是高手)。

  我们先看看反射能实现什么功能吧。

  1.在运行时得到任意一个类所具有的成员方法数组:

  Java代码

  java.lang.reflect.Method[] methods=a.getClass().getMethods();

  2.在运行时得到类定义的属性对象数组:

  Java代码

  java.lang.reflect.Field[] fields=a.getClass().getFields();

  大家都用过java的编译工具吧,比如说我用的eclipse,写出一个对象名,一按点,就会自动弹出该对象的所有方法(曾经觉得好神奇的),其实就是利用了java的反射原理得到了类的属性和方法。

  3.得到类实现的接口:

  Java代码

  Class[] interfaces=a.getClass().getInterfaces();

  当然,java.lang.reflect的方法很多,大家可以试着熟悉一下,在这里就不一一举例了。

  反射的这些功能在实际操作中有什么作用呢?还是用示例说明吧。比如说我和程序员A一起完成一个项目,上司规定了我们的工作(框架),于是乎我们各自为战。我们要保证自己的代码能够编译成功再交工给上司,但是,我的程序需要调用A要完成的那部分的方法,如果我不利用反射机制,就必须要等B完工了才能编译测试。显然,这在工作中是不现实的(不仅仅是时间问题)。有了反射之后,我只需要知道接口就OK了,方法没有实现也不会影响我的工作。

  一些大学生再经历了就业波折后,最终选择回炉重塑的大学生们不在少数。在疯狂java培训机构(疯狂软件学院http://www.fkjava.org/抢座热线:020-28309358,020-28309378咨询QQ:707552864,544627560 ),教师拥有软件开发经验,在教学中注重实践性,让学员在最短的时间内学到最前沿的编程技术。通过大量全真企业项目训练,让你成为社会急需的软件工程师。通过很短几个月的疯狂java培训,学员具备软件开发能力,可以独立进行java软件开发,而且java工程师的薪资在5000元以上,对自己做一个明智的选择,从此改变自己求职时的尴尬境地。