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);
结果,成功读取配置文件:
没有什么优雅的代码比空代码的执行效率更高