zoukankan      html  css  js  c++  java
  • java反射详解 一

    【案例1】通过一个对象获得完整的包名和类名

    package Reflect;

    /**
    * 通过一个对象获得完整的包名和类名
    * */
    class Demo{
    //other codes...
    }

    class hello{
    public static void main(String[] args) {
    Demo demo=new Demo();
    System.out.println(demo.getClass().getName());
    }
    }


    【运行结果】:Reflect.Demo

    添加一句:所有类的对象其实都是Class的实例。

    【案例2】实例化Class类对象

    package Reflect;
    class Demo{
    //other codes...
    }

    class hello{
    public static void main(String[] args) {
    Class<?> demo1=null;
    Class<?> demo2=null;
    Class<?> demo3=null;
    try{
    //一般尽量采用这种形式
    demo1=Class.forName("Reflect.Demo");
    }catch(Exception e){
    e.printStackTrace();
    }
    demo2=new Demo().getClass();
    demo3=Demo.class;

    System.out.println("类名称 "+demo1.getName());
    System.out.println("类名称 "+demo2.getName());
    System.out.println("类名称 "+demo3.getName());

    }
    }


    【运行结果】:

    类名称   Reflect.Demo

    类名称   Reflect.Demo

    类名称   Reflect.Demo

    【案例3】通过Class实例化其他类的对象

    通过无参构造实例化对象

    package Reflect;

    class Person{

    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;
    }
    @Override
    public String toString(){
    return "["+this.name+" "+this.age+"]";
    }
    private String name;
    private int age;
    }

    class hello{
    public static void main(String[] args) {
    Class<?> demo=null;
    try{
    demo=Class.forName("Reflect.Person");
    }catch (Exception e) {
    e.printStackTrace();
    }
    Person per=null;
    try {
    per=(Person)demo.newInstance();
    } catch (InstantiationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    per.setName("Rollen");
    per.setAge(20);
    System.out.println(per);
    }
    }


    【运行结果】:

    [Rollen  20]


    全文请看 http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html
  • 相关阅读:
    HDU 1730 类NIM模型
    HDU 4315 阶梯博弈变形
    HDU 3389 阶梯博弈变形
    HDU 1524 树上无环博弈 暴力SG
    HDU 3094 树上删边 NIM变形
    vim的安装与配置
    Apache Mysql 搭配详解
    [置顶] 博客转移
    “玲珑杯”线上赛 Round #15 河南专场 C 咸鱼魔法记
    “玲珑杯”线上赛 Round #15 河南专场 F 咸鱼文章
  • 原文地址:https://www.cnblogs.com/hangaozu/p/7544473.html
Copyright © 2011-2022 走看看