zoukankan      html  css  js  c++  java
  • 反射有关

    package com.cn;

    public class Student {
    public String name;
    public int id;
    private int age;
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public int getAge() {
    return age;
    }
    public void setAge(int age) {
    this.age = age;
    }
    @Override
    public String toString() {
    return "Student [name=" + name + ", id=" + id + ", age=" + age + "]";
    }
    public Student(String name, int id, int age) {
    super();
    this.name = name;
    this.id = id;
    this.age = age;
    }
    public Student(String name, int id) {
    super();
    this.name = name;
    this.id = id;
    }
    public Student(){

    }
    public void show(){
    System.out.println("10 years");
    }
    public String display(String nationString){

    System.out.println("guojia"+nationString);
    return nationString;
    }
    private String love(String name){
    return name;
    }
    public String dove(String obj, Integer age){
    System.out.println("My age is "+age+"My name is"+obj);
    return obj;
    }
    public static void china(){
    System.out.println("woshi");
    }

    }

    **************************************************************

    package com.cn;

    import static org.junit.Assert.*;

    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;

    public class Test {

    @org.junit.Test
    public void test() throws Exception {
    Class clazz=Student.class;
    Field field=clazz.getField("name");
    Student student=(Student) clazz.newInstance();
    System.out.println(student);
    field.set(student,"Hujin");
    System.out.println(student);
    }
    //运行时类私有属性的调用
    @org.junit.Test
    public void test2() throws NoSuchFieldException, SecurityException, InstantiationException, IllegalAccessException{
    Class zlClass=Student.class;
    Field age=zlClass.getDeclaredField("age");
    age.setAccessible(true);
    Student student=(Student) zlClass.newInstance();
    age.set(student, 87);
    //student.setAge(8);
    System.out.println(student);
    }
    //运行时类方法的调用
    @org.junit.Test
    public void testmethod() throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
    Class zlClass=Student.class;
    //getMethod(string namemethod,Class...paras)获取运行时类的public方法
    Method method=zlClass.getMethod("show");
    Student student=(Student) zlClass.newInstance();
    Object object=method.invoke(student);
    System.out.println(object);

    //调用方法,invoke(object obj,object...paras)
    Method method2=zlClass.getMethod("toString");
    Object object2=method2.invoke(student);
    System.out.println(object2);

    //静态方法的调用
    Method method3=zlClass.getMethod("china");
    method3.invoke(Student.class);

    //有参数有返回值
    Method method4=zlClass.getMethod("dove", String.class,Integer.class);
    Object object3= method4.invoke(student, "My",12);
    System.out.println(object3);

    //调用私有方法
    Method method5=zlClass.getDeclaredMethod("display", String.class);
    method5.setAccessible(true);
    Object nation= method5.invoke(student, "Chn");
    System.out.println(nation);

    //调用指定的构造器
    Constructor constructor=zlClass.getDeclaredConstructor(String.class,int.class,int.class);
    constructor.setAccessible(true);
    Student student2=(Student) constructor.newInstance("Wang",12,1121);
    System.out.println(student2);
    }
    }

  • 相关阅读:
    poj 3322 不错的搜索题,想通了就很简单的。
    spoj 10649 镜子数的统计(正过来反过去一样)
    搜索第一题(poj 1190)蛋糕
    HashMap和Hashtable的区别
    ajax简单联动查询以及遇到的问题
    PHP之面向对象
    pg_bulkload快速加载数据
    WalMiner
    postgresWAL写放大优化
    postgresql创建统计信息优化
  • 原文地址:https://www.cnblogs.com/afterhours/p/6229053.html
Copyright © 2011-2022 走看看