黑马程序员面试题Java高新技术之反射

原创 2013年12月05日 16:41:26

--------- android培训java培训、期待与您交流!---------

Class   类实例代表的是内存中的字节码。


创建一个Class对象是将代表该类的字节码加载到内存中,再使 用这些字节码来创建一个一个的对象。


得到一个字节码对应的实例对象:


        A) Class class2=String.class;


        B) Class class3=Class.forName("java.lang.String");


C)Class class1=“hello!”.getClass();


 


反射:


把Java类中的各种成分映射成相应的java类


会比较占用系统内存。导致机器性能下降。


Constructor:


得到一个类中所有的构造方法:


Constructor [] constructors= Class.forName("java.lang.String").getConstructors();


得到一个类中有参的构造方法:


Constructor constructor Class.forName(“java.lang.String”).getConstructor(StringBuffer.class);


发射法创建实例对象:


 String str = (String)constructor.newInstance(new StringBuffer("abc"));


Class.newInstance()方法:


String obj = (String)Class.forName("java.lang.String").newInstance();


Field:代表某个类中的一个成员变量


Method:代表某个类中的一个成员方法


例子:建立一个JavaBean类,然后进行反射。


a)建立一个JavaBean类:


public class Dot {


private int x;


private int y;


private int z;


public Dot(int x, int y,int z) {


    super();


    this.x = x;


    this.y = y;


    this.z=z;


}


public int getX() {


    return x;


}


public void setX(int x) {


    this.x = x;


}


public int getY() {


    return y;


}


public void setY(int y) {


    this.y = y;


}


public int getZ() {


    return z;


}


public void setZ(int z) {


    this.z = z;


}


@Override


public String toString() {


    // TODO Auto-generated method stub


    return x "---" y "-----" z;


}


}


B)反射:


Constructor       con=Dot.class.getConstructor(int.class,int.class,int.class);       //得到类的构造函数


 


            Dot dot=(Dot) con.newInstance(2,3,4);/利用构造函数创建一个Dot类对象。


            Method[] method=Dot.class.getMethods();//返回公共成员方法


            for (int i = 0; i < method.length; i ) {


                System.out.println(method[i].getName());//打印出方法名。


            }


            Field fy=Dot.class.getField("z");//得到可见的属性的变量


            System.out.println(fy.getName());//以字符串形式打印该变量


fy.set(dot, 23);//设置变量在某个对象上的值


            System.out.println(fy.get(dot));//获取该变量在某个对象上的值


            Field f=Dot.class.getDeclaredField("x");//x变量在Dot类中式私有的


            f.setAccessible(true);//暴力反射    不管是什么条件都能够进行反射


            System.out.println(f.get(dot));


C)对数组的反射:


       


        Object[] ob=new Object[]{"abc",123,'a'};


        System.out.println(ob.getClass().isArray());//判定此 Class 对象是否表示一个数组类。


        int length=Array.getLength(ob);//返回数组ob的长度


        for (int i = 0; i <length ; i ) {


            System.out.println(Array.get(ob, i).getClass());


            //得到数组中每个对象的字节码。


        }



黑马程序员-java就业面试题大全(持续更新)

1、一个"java"源文件中是否可以包含多个类()?
  • zj3911507
  • zj3911507
  • 2014年06月20日 16:32
  • 1906

黑马程序员--Java基础面试题整理

------- android培训、java培训、期待与您交流! Java面试题整理(自己学习过程中整理的重点题目,为面试做准备) 编程基础 1.(面试题): ...
  • wwj101004
  • wwj101004
  • 2014年10月31日 23:09
  • 770

黑马程序员——Java基础测试题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 黑马程序员——Java基础测试题 第1题:以下代码哪个是正确的?为什么?   a. byte...
  • liu007004
  • liu007004
  • 2015年01月16日 12:49
  • 1371

黑马程序员_java多线程的一些总结(一)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、    进程和线程 1、   进程和线程的关系。 一般来说,我们运行一个应用程序的,就启动...
  • u011449569
  • u011449569
  • 2015年10月29日 00:23
  • 285

黑马程序员学习笔记 Java的三大框架

如果做javaweb开发,spring是一定要学的,现在主流还是ssh,就是strurs+hibernate+spring,其中hibernate是持久层,用来持久化数据库操作的,如果不喜欢可以学点别...
  • Mr_April
  • Mr_April
  • 2015年07月03日 17:12
  • 1535

关于我在黑马程序员培训毕业后的亲身体验

首先申明:我本人已经于2016年5月份在广州传智播客java培训完毕业,和黑马程序员官网没有任何的利益往来,也没有人出钱给我帮他们做软文推广,这是我在黑马程序员的亲身体验,不存在虚构。...
  • wjycgl
  • wjycgl
  • 2017年04月20日 15:27
  • 1641

黑马程序员:Java学习路线图上线了

——你要的就在这!   从几何时,网络家喻户晓;从什么时候开始网上搜索东西都要收费才能下载;又是从何时起网上再也找不到真正有用的资源,除了交钱再无他法了吗?不,今天告诉你,好的资源一直以来不怕分享...
  • itcast_cn
  • itcast_cn
  • 2016年10月27日 11:19
  • 2322

java面试题--java反射机制

Java反射机制的作用: 1)在运行时判断任意一个对象所属的类。 2)在运行时判断任意一个类所具有的成员变量和方法。 3)在运行时任意调用一个对象的方法 4)在运行时构造任意一个类的对象 ...
  • snn1410
  • snn1410
  • 2015年04月10日 15:04
  • 13089

黑马程序员:Java学习路线大揭秘连载2-JavaWeb篇!

编程语言Java,已经21岁了。从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的。Java应用的广泛已...
  • itcast_cn
  • itcast_cn
  • 2016年10月18日 17:44
  • 1424

【黑马程序员】java高新技术反射

------- Windows Phone 7手机开发、.Net培训、期待与您交流! ------- 1,java反射机制的定义以及概述 java的反射机制就是在java程序运行状态下,对于任意...
  • Ly_douya
  • Ly_douya
  • 2013年11月20日 20:41
  • 707
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员面试题Java高新技术之反射
举报原因:
原因补充:

(最多只允许输入30个字)