public class MyConstructors {
@Test
public void classConstructors() {
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Constructor constructor = forName.getConstructor();
constructor.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void classConstructors1() {
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Constructor constructor = forName.getConstructor(String.class);
constructor.newInstance("String类型的参数");
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void classConstructors2() {
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Constructor constructor = forName.getConstructor(String.class,int.class);
constructor.newInstance("String And int类型的参数",1989);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void classConstructors3() {
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Constructor constructor = forName.getDeclaredConstructor(List.class);
constructor.setAccessible(true);
constructor.newInstance(new ArrayList());
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void classConstructors4() {
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
forName.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class MyMethod {
@Test
public void classMethod(){
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Object object = forName.newInstance();
Method method = forName.getMethod("methodTest", null);
method.invoke(object, null);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void classMethod1(){
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Object object = forName.newInstance();
Method method = forName.getMethod("methodTest1", String.class,int.class);
method.invoke(object, "String参数",1);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void classMethod2(){
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Object object = forName.newInstance();
Method method = forName.getMethod("methodTest2", String.class,int[].class);
method.invoke(object, "String参数",new int[]{1,2,3,4,5});
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void classMethod3(){
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Object object = forName.newInstance();
Method method = forName.getDeclaredMethod("methodTest3",InputStream.class);
method.setAccessible(true);
method.invoke(object, new FileInputStream("E:\\eclipse-jee-luna-SR1a-win32\\workspace\\reflect\\src\\com\\xmwl\\reflect\\MyConstructors.java"));
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void classMethod4(){
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Object object = forName.newInstance();
Method method = forName.getMethod("methodTest4", String.class);
method.invoke(null,"String参数");
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void classMethod5(){
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Object object = forName.newInstance();
Method method = forName.getMethod("methodTest5", String[].class);
method.invoke(object,(Object)new String[]{"数组","会拆分成n个参数"});
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Test
public void classField() {
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Object obj = forName.newInstance();
Field field = forName.getField("name1");
Object obj2 = field.get(obj);
Class type = field.getType();
System.out.println(type+" "+obj2);
field.set(obj, "set_value");
Student student = (Student) obj;
System.out.println(student.name1);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void classField1() {
try {
Class forName = Class.forName("com.xmwl.reflect.Student");
Object obj = forName.newInstance();
Field field = forName.getDeclaredField("name");
field.setAccessible(true);
Object obj2 = field.get(obj);
Class type = field.getType();
System.out.println(type+" "+obj2);
} catch (Exception e) {
e.printStackTrace();
}
}
public class Student {
public String name1 = "name1_value";
private String name;
private int age;
private Date date;
public Student() {
System.out.println("反射了无参构造方法");
}
public Student(String name) {
System.out.println("反射了"+name+"的有参构造方法");
}
public Student(String name,int age) {
System.out.println("反射了"+name+"的有参构造方法"+age);
}
private Student(List list) {
list.add("反射了私有的有参构造方法");
System.out.println(list);
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void methodTest(){
System.out.println("反射了无参的方法");
}
public void methodTest1(String arg,int arg1){
System.out.println("反射了有参的方法"+arg+arg1);
}
public void methodTest2(String arg,int[] arg1){
System.out.println("反射了有参的方法"+arg+arg1[2]);
}
private void methodTest3(InputStream inputStream){
System.out.println("反射了有参私有的方法"+inputStream);
}
public static void methodTest4(String arg){
System.out.println("反射了静态有参的方法"+arg);
}
public void methodTest5(String[] args){
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}