A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 普哥 中级黑马   /  2014-7-7 00:17  /  1486 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何获得字节码文件?

1 个回复

倒序浏览
本帖最后由 燿陚√揚葳 于 2014-7-7 11:34 编辑

获取class的三种方法:
1.obj,getClass():用于获得对象的类型。通过每个对象都具备的方法getClass来获取,弊端:必须要创建该类对象,才可以调用getClass方法。
2. 类名.class:用于获得指定的类型,传参用。每一个数据类型(基本数据类型和引用数据类型)都有一个静态的属性class。弊端:必须要先明确该类

前两种方式不利于程序的扩展,因为都需要在程序使用具体的类来完成。

3.Class.forName(classname):用于做类加载。使用的Class类中的方法,静态的forName方法。指定什么类名,就获取什么类字节码文件对象,这种方式的扩展性最强,只要将类名的字符串传入即可

注意:Class.forName()返回字节码的两种返回方式:1.曾经加载过已经呆在虚拟机里的,直接返回
2.先加载缓存到虚拟机伦里,以后用的话就不用再加载了。

加载自定义类要写包名.类名     比如:String就写java.lang.String
三中获取方式代码如下:
  1. class Student{
  2. private int x;
  3. public int y;
  4. public String str1="basketball";
  5. public String str2="football";
  6. public String str3="pingpong";
  7. Student(int x,int y){
  8. this.x=x;
  9. this.y=y;
  10. }
  11. public String toString(){
  12. return str1+"***"+str2+"***"+str3;
  13. }
  14. }
  15. public class Demo {

  16. public static void main(String[] args) throws ClassNotFoundException {

  17. Student s=new Student(5,6);
  18. Class st1=s.getClass();
  19. Class st2=Student.class;
  20. Class st3=Class.forName("com.Student");
  21. System.out.println(st2);
  22. System.out.println(st1);
  23. System.out.println(st1==st2);
  24. System.out.println(st1==st3);
  25. }


  26. }
复制代码






回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马