Java反射系列(1)

  1. 概念:
    反射:主要之程序可以访问、检测和修改他们本身状态或者行为的一种能力。
    基本要素:开放性原因连接(原因连接是指:反射系统自描述的改变能够立即反应到系统底层的实际状态和行为上)

Java中的反射指的是,java程序加载类的时候拥有天眼一样的将类看透的能力。可以取得类的相关属性(对象实体、方法、变量)。
实际应用:JavaBean。

  1. 实例
    编写一个测试实例。
package java.reflection;

import java.lang.reflect.Method;

public class Reflectionmode1 {

    public static void main(String[] args) {

    try {
        Class class1 = Class.forName("java.lang.System");  //加载类
        Method method[] = class1.getDeclaredMethods();     //取得类的方法列表

        for (int i = 0; i < method.length; i++) {
            System.out.println(method[i].toString());
        }

    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    }

}

这里出现了一个异常的报错,

这里写图片描述
最后发现自己的包名有问题,不能以”java.”开头。

将包名改成:com.reflection

就可以得到java.lang.System这个类中的所有函数信息:

public static void java.lang.System.exit(int)
public static void java.lang.System.runFinalization()
public static void java.lang.System.runFinalizersOnExit(boolean)
private static void java.lang.System.initializeSystemClass()
public static java.lang.String java.lang.System.setProperty(java.lang.String,java.lang.String)
public static java.lang.String java.lang.System.getProperty(java.lang.String)
public static java.lang.String java.lang.System.getProperty(java.lang.String,java.lang.String)
public static native int java.lang.System.identityHashCode(java.lang.Object)
public static native long java.lang.System.currentTimeMillis()
public static native long java.lang.System.nanoTime()
public static native void java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int)
private static native void java.lang.System.registerNatives()
public static java.lang.SecurityManager java.lang.System.getSecurityManager()
public static void java.lang.System.load(java.lang.String)
public static void java.lang.System.loadLibrary(java.lang.String)
public static native java.lang.String java.lang.System.mapLibraryName(java.lang.String)
private static void java.lang.System.checkIO()
private static void java.lang.System.checkKey(java.lang.String)
public static java.lang.String java.lang.System.clearProperty(java.lang.String)
public static java.io.Console java.lang.System.console()
public static void java.lang.System.gc()
public static java.util.Properties java.lang.System.getProperties()
public static java.lang.String java.lang.System.getenv(java.lang.String)
public static java.util.Map java.lang.System.getenv()
public static java.nio.channels.Channel java.lang.System.inheritedChannel() throws java.io.IOException
private static native java.util.Properties java.lang.System.initProperties(java.util.Properties)
public static java.lang.String java.lang.System.lineSeparator()
private static java.io.PrintStream java.lang.System.newPrintStream(java.io.FileOutputStream,java.lang.String)
public static void java.lang.System.setErr(java.io.PrintStream)
private static native void java.lang.System.setErr0(java.io.PrintStream)
public static void java.lang.System.setIn(java.io.InputStream)
private static native void java.lang.System.setIn0(java.io.InputStream)
private static void java.lang.System.setJavaLangAccess()
public static void java.lang.System.setOut(java.io.PrintStream)
private static native void java.lang.System.setOut0(java.io.PrintStream)
public static void java.lang.System.setProperties(java.util.Properties)
public static void java.lang.System.setSecurityManager(java.lang.SecurityManager)
private static synchronized void java.lang.System.setSecurityManager0(java.lang.SecurityManager)

猜你喜欢

转载自blog.csdn.net/sinat_36220051/article/details/78928636