【Java SE】反射

原创 2017年04月11日 19:18:47

一、ClassLoader

  • 类的加载机制,把类加载到内存,并非一次性加载,需要的时候再加载。
  • static语句块加载后只执行一次
  • dynamic语句块每次new对象都会执行(用的比较少)
public class Demo {
    public static void main(String[] args) {
        new A();
        new A();
    }
}

class A {
//动态语句块,每new一个对象就会执行一次
    {
        sopl("--------------");
    }
}
//运行结果:
--------------
--------------
  • JDK中有很多的ClassLoader
    这里写图片描述

二、反射

class T {
    T() {
        sopl("hello");
    }

    public void show(String s) {
        sopl(s);
    }
}

public class Demo {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        String className = "demopackage.T";
        Class<?> c = Class.forName(className);//把名字为className的类加载到内存 
        Object o = c.newInstance();
        Method[] m = c.getMethods();
        for(Method ms : m) {
            //sopl(ms.getName());
            if(ms.getName().equals("show")) {
                ms.invoke(o,"show");//show被调用
                for(Class cl : ms.getParameterTypes()) {
                    sopl(cl.getName());//获取参数类型名字
                }
            }
        }       
    }
}
//运行结果:
hello
show
java.lang.String
  • 工厂模式:用一个方法创建一个对象,而不是new一个对象,这个方法经常叫做静态工厂方法
class T {   
    private static T t = null;

    public static T getInstance() {
        if(t == null) {
            t = new T();
        }

        return t;
    }
}

public class Demo {
    public static void main(String[] args) {
        T tt = T.getInstance();//利用静态工厂方法建立对象
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Cleann/article/details/70037723

JAVA SE 语言编程

-
  • 1970年01月01日 08:00

Java SE练习 - 反射获取对象构造方法、成员变量、成员方法

前言:反射使用回顾一、获取字节码文件对象的三种方式,推荐使用第三种方式//获取字节码文件对象的三种方式 //方式一 Class c1 = Student.class; ...
  • m0_37602117
  • m0_37602117
  • 2017-12-13 11:35:12
  • 66

【Java SE】java反射机制

一、前言  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性,方法,泛型类型;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法...
  • ydxlt
  • ydxlt
  • 2015-11-28 10:14:19
  • 5703

JavaSE 反射技术

反射技术 一、             反射应用场景&特点 在我们实际开发中会做一些软件,并且这个软件可以正常使用了,后期我们可能出现需要在原有软件上扩展一些功能。要扩展功能,我们都知道需要预留接...
  • thj0v0
  • thj0v0
  • 2014-09-05 19:11:48
  • 124

Java SE__通过反射创建类并通过反射执行实例方法

Java的反射机制可以通过类的信息去创建类,并执行类中的方法。 示例代码: Reflect_Setter 类 public class Reflect_Setter { public int a; ...
  • u010003835
  • u010003835
  • 2015-10-22 16:59:47
  • 1062

java反射 java反射 java反射java反射

  • 2010年08月19日 22:26
  • 77KB
  • 下载

Java SE 基础:反射

作者:小兔子脚 链接:https://zhuanlan.zhihu.com/p/25057658 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 反射(R...
  • qq_34809469
  • qq_34809469
  • 2017-02-01 18:56:58
  • 67

JAVA SE——反射

反射:通过一个第三方元素来描述”.class”的类文件.从而使内存与硬盘之间产生一种映射关系叫做反射。 1.      所谓的加载并不是对“.class”类文件的真实拷贝,而是将其在堆内存中...
  • qq_20834769
  • qq_20834769
  • 2016-03-13 22:30:45
  • 121

Java SE之反射回顾

import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @author...
  • Kevin_King1992
  • Kevin_King1992
  • 2018-02-08 12:36:50
  • 27
收藏助手
不良信息举报
您举报文章:【Java SE】反射
举报原因:
原因补充:

(最多只允许输入30个字)