• 【B/S】java(4)


    编译类型与运行类型:

    Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型:编译时类型和运行时类型,例如:Person person = new Student();这行代码将会生成一个person变量,该变量的编译时类型是Person,运行时类型是Student

    import java.util.Date;
    
    public class ReflectTest {
        public static void main(String[] args){
            //编译类型为Object
            Object object = null;
            
            //运行类型为Date,理解:程序运行时,变量真实对应的类型
            object = new Date();
            
            //object.getDay();此时处于编译期,无法使用。
            //反射是运行期的一种特性,可以操作“运行类型”的对象。
        }
    }

    JAVA反射(放射)机制:

       “程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,PerlPythonRubyJavaScript是动态语言,C++JavaC#不是动态语言。

    比如(javascript):var username;

              username="xxx";

              username=250;

    但是JAVA有着一个非常突出的动态相关机制:Reflection(反射),用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的class。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造方法(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods

    反射(reflection)定义:

    在运行时期,动态地去获取类中的信息(类的信息,方法信息,构造器信息,字段等信息);

    比如类的信息:public、private等

    JVM加载类字节文件时,会创建一个对象(Class类型),反射就是去获取这个对象,从而就知道类中的信息。

    Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型:编译时类型和运行时类型,例如:Person person = new Student();这行代码将会生成一个person变量,该变量的编译时类型是Person,运行时类型是Student

  • 相关阅读:
    spring autoWire注解
    spring利用注解来注册bean到容器
    spring的两种属性注入方式setter注入和构造器注入或者自动注入
    嵌套对象
    Effective C++:规定12:不要忘了复制的对象时,它的每一个组成部分
    eclipse如何查看类之间的引用关系
    JavaScript权威指南科20章 client记忆
    IDL 自己定义功能
    2015学校的书面总结招募书面采访蓝汛通信算法
    用百度API实现热(WIFI)、GPS、基站定位
  • 原文地址:https://www.cnblogs.com/maplely/p/6528445.html
Copyright © 2020-2023  润新知