【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();//利用静态工厂方法建立对象
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Java SE 基础:反射

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

JAVA SE 学习笔记

J2SE基础学习笔记,温故知新于2016/12/5.
  • conanswp
  • conanswp
  • 2016年02月24日 22:07
  • 1572

让界面更加绚丽 Java SE 6.0 GUI体验

Java是一种非常强大的编程语言,但Java的GUI能力一直是它的软肋。虽然Java提供2种图形解决方案,AWT和Swing。但这2种图形库的功能十分有限,使用它们并不能带来更多的用户体验。而且AWT...
  • xxq_2011
  • xxq_2011
  • 2015年04月01日 17:53
  • 837

Java SE初步总结

前几天看完了马士兵老师的J2SE视频,算是开始Java的学习旅程了。现在每接触一个新的东西,都习惯去百度百科查一下它到底是个神马东西,然后再再深入一步去学习。对于J2SE,百度百科上是这么解释的:  ...
  • zjx86320
  • zjx86320
  • 2014年09月21日 14:55
  • 1808

【Java SE】java反射机制

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

【Java SE】————环境变量的配置及其原因(Windows)

环境变量:                  先说说环境变量,一般我们在配置的时候电脑中有两个,一个是用户环境变量,另一个是系统环境变量。(如下图)从字面上我们就可以看出来,用户环境变量,单单指的...
  • z15732621736
  • z15732621736
  • 2016年01月31日 11:55
  • 1652

Java SE 基础概述(二)异常处理

设计一个严谨的程序是一项繁琐的工作。各种各样的情况都应当被充分考虑。如果不采用异常处理方法,而按照一般的程序设计方法,则基本上只能逐个分析在程序中可能出现的各种异常情况,并在程序的相应位置立即作出适当...
  • u014145622
  • u014145622
  • 2015年04月27日 18:00
  • 400

Java(1):Java SE疯狂复习第1篇

好好复习。Java SE的重难点笔记(1)。
  • qcyfred
  • qcyfred
  • 2016年12月21日 15:51
  • 328

Java SE 8 新特性之旅 : Java开发世界的大变动

我很自豪的成为了adopt-OpenJDK的一员,像其他专业团队成员一样,但是我只刚加入了8个月,我们一同经历了Java SE 8 的开发、编译、编码、讨论……等等,直到JDK上线。Java SE 8...
  • supercrsky
  • supercrsky
  • 2015年08月04日 15:54
  • 1151

Java2SE基础知识点整理(二)

第一篇:Java2SE基础知识点整理(一)1.Interface与abstract类的区别 No. 区别 抽象类 接口 1 定义关键字 abstract class in...
  • ITMonkeyKing
  • ITMonkeyKing
  • 2017年02月20日 23:45
  • 414
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java SE】反射
举报原因:
原因补充:

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