java反射的一些用法

//反射指有classes文件,ide

public class ReflectionDemo {this

public static void main(String[] args) throws ReflectiveOperationException {.net

Student s=new Student();

Student s1=new Student();

//第一種方式
//Class c=s.getClass();//獲取的classes文件

//第二種方式

//Class c3=Student.class;

//第三種方式,建議使用這種方式

Class c4=Class.forName("day2.jihe.Student");
//獲取構造方法,不是私有的

Constructor []cc=c4.getConstructors();

//獲取全部的構造方法

Constructor[]mao=c4.getDeclaredConstructors();
for(Constructor con:cc) {

	System.out.println(con);
	
}
//獲得無參的構造方法

Constructor co=c4.getConstructor();

//拿到Student的實例

Object obj=co.newInstance();

System.out.println(obj);

//帶參數的構造方法的使用

// Class c5=Class.forName("day2.jihe.Student");code

// Constructor co1=c5.getConstructor(String.class,String.class);get

// System.out.println(co1);io

// Object ob1=co1.newInstance("mao","dong");class

// System.out.println(ob1);test

// Student s10=(Student) ob1;變量

// System.out.println(s10.getAge()+" "+s10.getAge());object

// //獲取有參數的私有帶參數構成方法

// Class c6=Class.forName("day2.jihe.Student");

// Constructor con6=c6.getDeclaredConstructor(String.class);

// con6.setAccessible(true);//私有的都須要如此設置

// Object obj6=con6.newInstance("mao");

// System.out.println(obj6);

//經過反射獲取全部公共的成員變量

// Class c7=Class.forName("day2.jihe.Student");

// Field []field=c7.getFields();

// for (Field f:field) {

// System.out.println(f);

// // }

//獲取單個的公共的成員變量

// Class c8=Class.forName("day2.jihe.Student");

// Field f=c8.getField("name");

// Constructor co8=c8.getConstructor();

// Object obj8=co8.newInstance();

// f.set(obj8, "北京");

// System.out.println(obj8);

//獲取全部的方法

// Class c9=Class.forName("day2.jihe.Student");

// Method[] me=c9.getDeclaredMethods();

// for (Method i:me) {

// System.out.println(i);

// }

//調用某個無參數的方法,調用有參數的方法,與調用有參數的構造方法相似

// Class c10=Class.forName("day2.jihe.Student");

// Constructor co10=c10.getConstructor();

// Object obj10=co10.newInstance();

// Method m10=c10.getMethod("test");

// m10.invoke(obj10);

//調用有參數的方法

Class c11=Class.forName("day2.jihe.Student");

Constructor con11 =c11.getConstructor();

Object obj11=con11.newInstance();

Method m11=c11.getMethod("test1", String.class);

Object objectString=m11.invoke(obj11, "tte");

System.out.println(objectString);

} }

//Student類

public class Student {

public String name;

public String age;

private String sex;

public Student() {

}

public Student(String name, String age) {

	this.name = name;
	
	this.age = age;
	
}

Student(String name){

	this.name=name;
}

public String getName() {

	return name;
	
}

public void setName(String name) {

	this.name = name;
}

public String getAge() {
	return age;
}

public void setAge(String age) {

	this.age = age;
}


[@Override](https://my.oschina.net/u/1162528)

public String toString() {

	return "Student [name=" + name + ",  age=" + age + "]";
	
}
public void test() {

	System.out.println("調用五參數的成員方法");
	
}
public String test1(String str) {

	return "反射方法的使用"+str;
	
	}

}

相關文章
相關標籤/搜索