SpringBoot学习笔记(持续更新)

一、通过反射调用Class类的公有方法和私有方法

问:如果一个类中的方法是私有方法,有办法能调用吗?

答:反射。

实例:

添加一个Order类:里面有两个public 方法和一个private方法

 

 1 package com;
 2 
 3 public class Order {
 4 
 5     public void getOrder() {
 6         System.out.println("this is getorder Method");
 7     }
 8 
 9     public void getOrderInfo(String orderId) {
10         System.out.println("this is getOrderInfo,the orderid is:" + orderId);
11     }
12 
13 
14     private void getOrderByName(String name) {
15         System.out.println("this is getorderbyname:" + name);
16     }
17 }

 

 

通过反射调用测试,测试代码:

package com;

import java.lang.reflect.Method;

public class Main {
    public static void main(String[] args) throws Exception {

        Class clazzOrder = Class.forName("com.Order");
        Object objOrder = clazzOrder.newInstance();

        Method getOrder = clazzOrder.getDeclaredMethod("getOrder", null);
        getOrder.setAccessible(true);
        System.out.println("执行方法getOrder");
        getOrder.invoke(objOrder, null);

        Method getOrderInfo = clazzOrder.getDeclaredMethod("getOrderInfo", String.class);
        getOrderInfo.setAccessible(true);
        System.out.println("执行方法getOrderInfo");
        getOrderInfo.invoke(objOrder, "123");

        Method getOrderByName = clazzOrder.getDeclaredMethod("getOrderByName", String.class);
        getOrderByName.setAccessible(true);
        System.out.println("执行方法getOrderByName");
        getOrderByName.invoke(objOrder, "你好");
        
    }
}

运行结果:

 

 可以看到,不管是public方法还是private方法都能访问。

 

二、访问配置文件xxx.properties

添加一个person.properties文件,并设置一个key-value,例如:

 

 

 

访问测试代码(方式一):

        Properties ps = new Properties();
        ClassLoader classLoader = Main.class.getClassLoader();
        //配置文件
        InputStream resourceAsStream = classLoader.getResourceAsStream("person.properties");
        //加载
        ps.load(resourceAsStream);
        //获取配置文件属性
        String user = ps.getProperty("user");
        System.out.println("user:" + user);

方式二:

        Properties ps = new Properties();
        FileInputStream fileInputStream=new FileInputStream("src\\person.properties");
        ps.load(fileInputStream);
        //获取配置文件属性
        String user = ps.getProperty("user");
        System.out.println("user:" + user);

 

 

结果,成功读取配置文件:

 

posted @ 2022-02-13 10:52  明&天  阅读(81)  评论(0编辑  收藏  举报