package get_class_method;

public class ReflectDemo {

    /**
* @param args
*/
public static void main(String[] args) {
getClassObject1();
getClassObject2();
getClassObject3();
} public static void getClassObject1(){
Person p = new Person();
System.out.println(p.getClass().getName());
}
/*
* 方式二:重点掌握
* 通过给定类的字符串名称就可获得该类的字节码文件对象,更为扩展。
* (第一种和第三种都不具有扩展性)
*/
public static void getClassObject2(){
Class<Person> pclass = null;
try {
/*
* 类的名字一定要写全(包括该类的包)
* 因为工程默认的路径查找时在bin目录或者src目录,如果类名不全,就无法找到该类
*/
pclass = (Class<Person>) Class.forName("get_class_method.Person");
System.out.println(pclass.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/*
* 方式三:
* 任何数据类型都有一个静态的属性 .class来获取其对应类的字节码文件对象
* 相对简单,但是还是要明确用到类中的静态成员。还是不够扩展!
*/
public static void getClassObject3(){
Class pclass = Person.class;
System.out.println(pclass.getName());
} }

java中三种方式获得类的字节码文件对象的更多相关文章

  1. JAVA反射机制_获取字节码文件对象

    是在运行状态中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...

  2. Django中三种方式写form表单

    除了在html中自己手写form表单外,django还可以通过 继承django.forms.Form 或django.forms.ModelForm两个类来自动生成form表单,下面依次利用三种方式 ...

  3. 关于java中三种初始化块的执行顺序

    许多小伙伴对于java中的三种初始化块的执行顺序一直感到头疼,接下来我们就来分析一下这三种初始化块到底是怎么运行的.有些公司也会将这个问题作为笔试题目. 下面通过一段代码来看看创建对象时这么初始化块是 ...

  4. java多线程三种方式

    java多线程都有几种方式 有三种: (1)继承Thread类,重写run函数 创建: class xx extends Thread{ public void run(){ Thread.sleep ...

  5. iOS中三种方式实现登录界面播放视频或gif效果

    现在app都做的越来越炫酷,各种动画效果,各种特效很好的提高了用户的体验.很多app在登录界面都使用了动画效果,比如Uber,Keep,QQ等等.这些动画效果基本都是使用gif或者MP4来实现的. 效 ...

  6. JDK动态代理[4]----ProxyGenerator生成代理类的字节码文件解析

    通过前面几篇的分析,我们知道代理类是通过Proxy类的ProxyClassFactory工厂生成的,这个工厂类会去调用ProxyGenerator类的generateProxyClass()方法来生成 ...

  7. Java中三种代理模式

    代理模式 代理(Proxy)是一种设计模式,提供了间接对目标对象进行访问的方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的功能上,增加额外的功能补充,即扩展目标对象的功能. 这就 ...

  8. java中三种for循环之间的对比

    普通for循环语法: for (int i = 0; i < integers.length; i++) { System.out.println(intergers[i]); } foreac ...

  9. Java中三种比较常见的数组排序

    我们学习数组比较常用的数组排序算法不是为了在工作中使用(这三个算法性能不高),而是为了练习for循环和数组.因为在工作中Java API提供了现成的优化的排序方法,效率很高,以后工作中直接使用即可 . ...

随机推荐

  1. 从委托、匿名方法到Lambda

    前面讲过委托的知识,本次由委托过渡到Lambda表达式,更易于理解. class Program { static void Main(string[] args) { , , , }; ProcAr ...

  2. hdu 1548 楼梯 bfs或最短路 dijkstra

    http://acm.hdu.edu.cn/showproblem.php?pid=1548 Online Judge Online Exercise Online Teaching Online C ...

  3. javaweb回顾第七篇jsp

    1:为什么会有JSP jsp全名(java server pages)中文叫做java服务器页面.在Servlet那一篇我们发现用Servlet可以生成动态页面,但是我们却在Servlet中却写了大量 ...

  4. RTTI的实现(vc)--转载

    RTTI (Run Time Type info) 这个神奇的东西用于存储类的相关信息,用于在运行时识别类对象的信息.C++ 里面只记录的类的名字和类的继承关系链.使得编译成二进制的代码,对象可以知道 ...

  5. U盘安装ubuntu,一直提示start booting from usb device…[转]

    找到U盘中syslinux文件夹下的syslinux.cfg文件,在default vesamenu.c32前面加一个#号就可以了. 我的syslinux.cfg文件修改后如下,够简单吧!!!!建议用 ...

  6. 免安装版MySQL安装步骤

    http://downloads.mysql.com/archives/community/ 1:添加环境变量把MySQL解压后的bin目录添加到path环境变量中 2:修改或者添加my-defaul ...

  7. NSBundle 的理解和 mainBundle

    http://www.360doc.com/content/15/0629/10/20918780_481405304.shtml

  8. Android 5.0 Uicc框架分析

    已同步更新至个人blog:   dxjia.cn Uicc框架 UICC框架是Android在4.1引入的,使的对卡的管理控制更加清晰.要了解这个UICC框架,需要从UiccController开始, ...

  9. ubuntu下取代ping的好工具tcpping

    $ sudo apt-get install tcptraceroute bc$ cd /usr/bin$ sudo wget http://www.vdberg.org/~richard/tcppi ...

  10. [GraphQL] Serve a GraphQL Schema as Middleware in Express

    If we have a GraphQL Schema expressed in terms of JavaScript, then we have a convenient package avai ...