Java反射机制:

   在java语言中,通过反射机制可以操作字节码文件;(可以直接修改/读取字节码文件)

   反射机制在java.lang.reflect.*包下;

反射机制重要的相关类:

  Java.lang.class; 代表整个字节码,代表一个类型;

  Java.lang.reflect.Method; 代表字节码中的方法字节码;

  Java.lang.reflect.Constructor; 代表字节码中的构造方法字节码;

  Java.lang.reflect.Field; 代表字节码中的属性字节码;

如何获取一个类的字节码?(三种方式)

  字节码文件在装载JVM的时候,只装载一份;

  第一种:Class.forName();是一个静态方法,可以获取一个类的字节码,括号中传入的是一个字符串类型的完整类名(类名必须带有包名),

  例如:Class.forName(“java.lang.String”);

  第二种:getClass();该方法是java中任何一个对象都有的方法;调用时,对象.getClass()即可;

  第三种:class属性;在java语言中,任何一个类型,包括基本数据类型都有点class属性;例如:String.class\Integer.class;等;

  使用反射机制更具有灵活性;

  如果想执行一个类的静态代码块,直接调用Class.forName(“”)即可自动执行静态代码块;

任何获取一个文件的绝对路径?

  Thread.CurrentThread().getContextClassLoader().getResource(“文件名”).getPath();

  以上方法可以获取一个文件的绝对路径;

  该方法是相当通用的,因为只要获取的文件在src类的路径下,都可以;

以流的形式返回一个路径:

  InputStream in=Thread.currentThread().getContextClassLoader.getResourceAsStream(“文件路径名”);

资源绑定器:

  在java.util包下提供了一个资源绑定器,便于获取属性配置文件中的内容,

  但该种方式,配置文件xxx.properties文件必须是放在类路径下的,文件也是必须以properties结尾的;

  语法:ResourceBundle rb=ResourceBundle.getBundle(“配置属性文件名”);(配置属性名不包括.properties后缀)

可变长参数:

  在方法的括号中类型后面加上3个点即可;

  语法:public void fun(int… id){}

  这个写法,在调用时,可以不写参数,亦可以写多个参数,没有限制;但类型需要统一,而且可变长参数在括号中只能出现在最后,且只能出现一个;

posted on 2022-03-18 14:58  Jron*  阅读(38)  评论(0)    收藏  举报