zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    select.poll,epoll的区别与应用
    hibernate生成查询语句但查不到数据
    优化exp/imp导入导出速度大全
    完美逆向百度手机助手5.0底部菜单栏
    C#序列化和反序列化
    Centos6 编译安装局域网NTP服务器
    linux查看服务器型号
    fopen/fclose
    C文件操作之写入字符串到指定文件并在屏幕显示
    Centos6.x X64 飞信安装
  • 原文地址:https://www.cnblogs.com/maplely/p/6528445.html
Copyright © 2011-2022 走看看