Java中Reflect的基本使用
Posted Mr. Tan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中Reflect的基本使用相关的知识,希望对你有一定的参考价值。
首先在package reflect下定义了一个类Book
1 package reflect; 2 3 class Book{ 4 private String title; 5 private double price; 6 public Book() { 7 this("Java开发", 20.00); 8 } 9 public Book(String title, double price) { 10 this.title = title; 11 this.price = price; 12 } 13 public String getTitle() { 14 return title; 15 } 16 public void setTitle(String title) { 17 this.title = title; 18 } 19 public double getPrice() { 20 return price; 21 } 22 public void setPrice(double price) { 23 this.price = price; 24 } 25 @Override 26 public String toString() { 27 return "标题: " + this.title + ", 价格:" + this.price; 28 } 29 }
1 package reflect; 2 3 import java.lang.reflect.Constructor; 4 import java.lang.reflect.Method; 5 import java.util.Arrays; 6 7 public class Reflect { 8 public static void main(String[] args) throws Exception { 9 /** 10 * 通过Class.forName(String str)方法获取Class实例cls 11 * 通过getConstructor(parameterTypes)获取构造方法 12 * 通过get。。。获取 public的属性, 方法 13 * 通过getDeclared。。。获取public,protected, private属性, 方法 14 * 通过newInstance(parameterTypes)构造对象 15 */ 16 Class<?> cls = Class.forName("reflect.Book"); 17 Constructor<?> con = cls.getConstructor(String.class, double.class); 18 Object obj = con.newInstance("你好", 2.5); 19 System.out.println(obj); 20 Method[] methods = cls.getDeclaredMethods(); 21 // System.out.println(Arrays.toString(methods)); 22 Method setTitle = cls.getMethod("setTitle", String.class); 23 Method getTitle = cls.getMethod("getTitle"); 24 // 通过invoke(obj, paramter)执行获取的方法 25 setTitle.invoke(obj, "我好!"); 26 System.out.println(getTitle.invoke(obj)); 27 System.out.println(obj); 28 } 29 }
以上是关于Java中Reflect的基本使用的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用匕首刀柄的代码时出现此错误,错误:[Hilt] java.lang.reflect.InvocationTargetException(无错误消息)