当前位置:阳光沙滩 >Java > 查看文章
阿里云优惠码

1.JAVA中用反射来实例化对象和获取构造方法

这里的实例化对象呢,是用Class类中的newInstance方法来实例化对象, 这个种实例化对象的方法比new这种方法有点复杂,那为什么 还使用这种方法呢,其实是为了尽量减少耦合。而减少耦合的最好方法是使用接口,但是,用了接口,也不能不使用new关键字,所以导致耦合的最关键原因是new。

另外就是如何获取这个字节码。有三种方法

|–通过这个Object类中的getClass方法来获取。

|–通过这个类名.class,不过这种方式很少用,一般在框架开发中出现

|–通过Class类中的forName方法来获取。

 

代码如下,同时还获取了这个Person中的构造方法;

获取构造方法包括这个所有构造方法和指定参数的构造方法。

import java.lang.reflect.*;

public class Demo{
	public static void main(String[] args)throws Exception{
		Class<?> cls = Class.forName("Person");
		
		Object obj = cls.newInstance();
		
		Person person = (Person)obj;
		
		System.out.println(person);
		
		//获取构造函数
		Constructor cons[] = cls.getConstructors();
		
		for(int i=0;i<cons.length;i++){
			System.out.println(cons[i]);
		}
		
		//获取指定参数的构造方法
		Class<?> con[] = new Class[]{String.class};
		Constructor constructor = cls.getConstructor(con);
		System.out.println(constructor);
	}
}

class Person{
	
	private String name = "sunofbeaches";
	private int age = 18;
	public Person(){}
	public Person(String name){
		this.name = name;
	}
	public Person(int age){
		this.age = age;
	}
	public Person(String name,int age){
		this.age = age;
		this.name = name;
	}
	
	public String toString(){
		return this.name+"...."+this.age;
	}
}

运行结果:

%e6%88%aa%e5%9b%be02

7K
相关文章
为您推荐
各种观点