首页 > 生活 > > 正文
2023-11-19 07:57:07

Java反射机制的原理(java反射机制)

导读 大家好,我是小夏,我来为大家解答以上问题。Java反射机制的原理,java反射机制很多人还不知道,现在让我们一起来看看吧!1、Java 的反射...

大家好,我是小夏,我来为大家解答以上问题。Java反射机制的原理,java反射机制很多人还不知道,现在让我们一起来看看吧!

1、Java 的反射机制是使其具有动态特性的非常关键的一种机制,也是在JavaBean 中广泛应用的一种特性。

2、 运用JavaBean 的最常见的问题是:根据指定的类名,类字段名和所对应的数据,得到该类的实例,下面的一个例子演示了这一实现。

3、 -|Base.java //抽象基类 |Son1.java //基类扩展1 |Son2.java //基类扩展2 |Util.java /** * @author metaphy * create 2005-4-14 9:06:56 * 说明: */ (1)Base.java 抽象基类只是一个定义 public abstract class Base { } (2)Son1.java /Son2.java 是已经实现的JavaBean public class Son1 extends Base{ private int id ; private String name ; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void son1Method(String s){ System.out.println(s) ; } } (3) public class Son2 extends Base{ private int id; private double salary; public int getId() { return id; } public void setId(int id) { this.id = id; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } } (4)Util.java 演示了如何根据指定的类名,类字段名和所对应的数据,得到一个类的实例 import java.lang.reflect.Method; public class Util { //此方法的最大好处是没有类名Son1,Son2 可以通过参数来指定,程序里面根本不用出现 public static Base convertStr2ServiceBean(String beanName,String fieldSetter,String paraValue){ Base base = null ; try { Class cls = Class.forName(beanName) ; base = (Base)cls.newInstance() ; Class[] paraTypes = new Class[]{String.class }; Method method = cls.getMethod(fieldSetter, paraTypes) ; String[] paraValues = new String[]{paraValue} ; method.invoke(base, paraValues) ; } catch (Throwable e) { System.err.println(e); } return base ; } public static void main(String[] args){ Son1 son1 =(Son1) Util.convertStr2ServiceBean("trying.reflect.Son1","setName","wang da sha"); System.out.println("son1.getName() :"+son1.getName()) ; } } //调用结果: //son1.getName() :wang da sha。

本文到此讲解完毕了,希望对大家有帮助。