Java:反射入门学习



介绍反射及作用

  • 反射(Reflect)是在运行时动态访问类与对象的技术
  • 反射是JDK1.2版本后的高级特性,隶属于java.lang.reflect
  • 大多数Java框架都基于反射实现参数配置、动态注入等特性

反射四个核心类

Class类

  • Class是JVM中代表“类和接口”的类
  • Class对象具体包含了某个特定类的结构信息
  • 通过Class对象可获取对应类的构造方法/方法/成员变量
image-20220526184026393

Constructor构造方法类

  • Constructor类是对Java类中的构造方法的抽象
  • Constructor对象包含了具体类的某个具体构造方法的声明
  • 通过Constructor对象调用带构造方法创建对象
image-20220526201933145

Method方法类

  • Method对象值代某个类中的方法的描述
  • Method对象使用classObj.getMethod()方法获取
  • 通过Method对象调用指定对象的应用方法
image-20220526205323578

Field成员变量类

  • Field对应某个具体类中的成员变量的声明
  • Field对象使用classObj.getField()方法获取
  • 通过Field对象可为某对象成员变量赋值/取值
image-20220526224931596

#### getDeclared系列方法说明

  1. getDeclaredConstructor(s) | Method(s) | Field(s)获取对应对象
  2. getConstructor(s) | Method(s) | Field(s)只能获取public对象
  3. 访问非作用域内构造方法、方法、成员变量,会抛出异常

产生异常

  1. ClassNotFoundException:类名与类路径书写错误时抛出“累无法找到”异常
  2. InstantiationException:非法访问异常,当在作用域外访问对象方法或成员变量时抛出
  3. IllegalAccessException:当对象无法被实例化,抛出“实例化异常”
  4. NoSuchMethodException:没有找到与之对应的格式的方法
  5. InvocationTargetException:当被调用方法的内部抛出了异常而没有被捕获时
  6. NoSuchFieldException:没有找到成员变量时跑出的异常

反射在项目中的应用

设置国家化配置文件config.properties

language=pers.hua.i18n.Zhcn

创建国家化接口并调用接口

public interface I18N {
    public String say();
}
public class Zhcn implements I18N {
    @Override
    public String say() {
        return "生命不息奋斗不止!";
    }
}

创建Application

public class Application {
    public static void main(String[] args){
        public static void say() {
            Properties properties = new Properties();
            String configPath = Application.class.getResource("/config.properties").getPath();
            try {
                configPath = new URLDecode().decode(congigPath,"UTF-8");
                properties.load(new FileInputStream(configPath));
                String language = configPath.getProperty("language");
                I18N i18n = (I18N)class.forName(language).newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
Java:反射入门学习-HuaのJava之旅
Java:反射入门学习
此内容为免费资源,请登录后查看
0
免费资源
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片