初始化有效地实现了尽可能的"惰性"。从对 initable引用的创建中可以看到,
仅使用.class语法来获得对类的引用不会引发初始化。但是,为了产生Class
引用,Class.forName()立即就进行了初始化,就想在对initable3引用的创建
中看到的。
如果一个static final值是"编译期常量",就想Initable.staticFinal那样,
那么这个值不需要对Initable类进行初始化就可以被读取。但是,如果只是一个
域设置为static和final的,还不足以去确保这种行为。
如果一个static域不是final的,那么对它访问时,纵使要求它被读取之前,
要先进行链接(为这个域分配存储空间)和初始化(初始化该存储空间), 就像在对
Initable2.staticNonFinal的范文中看到的那样。
package TypeInfo; import java.util.Random; class Initiable{ static final int staticFinal = 47; static final int staticFinal2 = ClassInitialization.rand.nextInt(1000); static{ System.out.println("Initializing Initable"); } } class Initable2{ static int staticNonFinal = 147; static{ System.out.println("Initializing Initable2"); } } class Initable3{ static int staticNonFinal = 74; static{ System.out.println("Initalizing Initable2"); } } public class ClassInitialization { public static Random rand = new Random(47); public static void main(String[] args) { Class initable = Initiable.class; System.out.println("After Creating Initable ref"); // Does not trigger initialization System.out.println(Initiable.staticFinal); // Does trigger initialization; System.out.println(Initiable.staticFinal2); // Does trigger initialization; System.out.println(Initable2.staticNonFinal); System.out.println("After creating Initables3 ref"); System.out.println(Initable3.staticNonFinal); } }
发表评论
-
仿真[汽车制造]
2012-02-13 01:26 710class Car{ private final i ... -
线程例子[Condition, SignlAll, await]
2012-02-09 22:05 1054package concurrency.waxomati ... -
生产者消费者[简单示例]
2012-02-09 21:38 675class Meal{ private final ... -
泛型[创建类型实例]
2012-02-06 01:01 763public Class Erased<T> ... -
多路分发3
2012-02-05 23:16 856使用常量相关的方法 常量相关的方法允许我们为每个 ... -
多路分发2[使用enum分发]
2012-02-05 18:09 1924直接将RoShamBo1.java翻译为基于enum的版 ... -
多路分发
2012-02-05 02:06 1408多路分发 Number.plus(Number) ... -
使用Enum的自动贩卖机
2012-02-04 13:52 952public enum Input { NICKEL ... -
使用enum的责任链
2012-02-04 12:39 1210package enumerated; impor ... -
枚举类Enum,EnumSet,EnumMap
2012-02-04 02:00 1458EnumSet与HashSet相比,非常快。 p ... -
枚举类enum
2012-02-03 15:00 924一般来说,我们希望每个美剧实例能够返回对自身的描述, ... -
类的简化历[从内部类到匿名内部类]
2012-02-02 12:41 650Version1: public class DirL ... -
持有引用java.lang.ref 和 WeakHashMap
2012-02-02 01:27 1001Thinking in java P554 持 ... -
Collections快速报错 fial-fast
2012-02-02 00:46 823{ public static void main( ... -
散列HashCode
2012-02-01 14:04 736散列的价值在于速度: 散列使得查询快速,由于瓶颈位于键 ... -
使用散列数据结构注意点
2012-02-01 01:32 608Goundhog自动继承基类Object,所以这里使用 ... -
Set注意点
2012-02-01 01:31 335如果我们尝试着将没有恰当支持不许的操作的类型用于需要这些 ... -
享元Map
2012-01-30 00:28 398这里之所以叫享元,注意static关键字。 定制了Entry ... -
深入容器Map
2012-01-19 15:12 413Map生成器 对Map的使用相同的方式,需要一 ... -
深入容器List
2012-01-19 14:40 362一种Generator解决方案: 所有Collect ...
相关推荐
在编程世界中,类型信息是程序理解数据结构和操作的关键元素。它涉及到变量、对象以及它们所持有的数据的种类。本章将深入探讨类型信息在软件开发中的重要性,特别是从源码分析和工具使用的角度。 类型信息在编程...
### C++运行时类型信息揭秘 #### 概述 C++是一种静态类型的编程语言,在编译阶段就已经确定了大部分的数据类型。然而,C++也支持动态类型信息查询和类型安全的转换,这主要通过`typeinfo`和`dynamic_cast`等机制来...
在JavaScript开发过程中,理解代码的运行时类型信息是优化性能、调试问题和编写高效代码的关键。"收集JavaScript代码的运行时类型信息"这个主题旨在探讨如何有效地获取和利用这些信息。 JavaScript是一种动态类型...
为避免溢出、输入输出错误,明确C++中的类型信息是有必要的。 包含最常用的C++类型,大小,占用字节,输入输出方法,范围。
2020-06-04事件类型信息处理方法、事件类型识别方法及装置
- 获取类型信息:使用Type对象,可以获取类型的所有成员信息,包括方法(MethodInfo)、属性(PropertyInfo)、字段(FieldInfo)、事件(EventInfo)等。 - 动态调用方法:通过MethodInfo对象,可以获取方法的...
全国土壤类型数据(矢量数据)是一份极为重要的地理信息系统(GIS)资源,它涵盖了中国各地的土壤类型信息。这份数据集可用于多个领域的科学研究,包括但不限于土壤功能性分析和土壤承载能力评价。在深入探讨这份...
标题中的“土壤类型矢量_新疆维吾尔自治区.zip”表明这是一个地理信息系统(GIS)相关的数据文件,其中包含了关于新疆维吾尔自治区的土壤类型信息。这类数据通常以矢量格式存储,这意味着它是由点、线、面等几何对象...
在泛型类中,虽然类型参数在编译时被擦除,但仍然可以通过一些方式获取类型信息。 泛型类的基本结构如下: ```java public class MyClass<T> { private T myVariable; public MyClass(T value) { this....
加密狗检测工具,检测系统中加密狗信息。
本资源"江苏省土壤类型shp矢量图层数据下载"正是GIS应用的一个实例,提供了江苏省的土壤类型信息,这对于农业、环境科学、城市规划等领域都具有极大的价值。 首先,`shp`文件是ESRI(Environmental Systems ...
本资源“浙江省土壤类型shp矢量图层数据下载”提供了浙江省的土壤类型信息,这对于农业规划、环境研究、土地利用分析等多个领域都具有极高的价值。 首先,我们需要了解什么是shp文件。SHP是ESRI(Environmental ...
1. 类型信息的接口:ITypeLib允许迭代获取类型库中包含的类型描述。 2. 提供全局函数和数据:类型库包含了模型中若干对象集的描述,例如方法、属性等。 3. 提供全面的信息:包括类型库对于用户的可用文件名和帮助等...
Java 在运行时识别类型信息的方法详解 Java 中的运行时类型识别(RTTI)机制是指在程序执行过程中,Java 虚拟机(JVM)可以识别出对象的真正类型信息,而不仅仅是引用类型。这项机制是通过 Class 类实现的。 Class...
- 在编译期间,所有的泛型类型信息都会被替换为它们的实际类型或者 Object 类型。例如,`List<String>` 会被擦除为 `List<Object>`。 - 类型参数的边界(如 `<T extends Number>`)也会被忽略,因为运行时不再需要...
在C++编程语言中,运行时获取类型信息是一项重要的功能,尤其对于动态类型检查和多态性至关重要。`type_info`类是C++标准库的一部分,位于`<typeinfo>`头文件中,它提供了在运行时查询和比较类型的能力。`type_info`...
MonkeyType的工作原理是,在运行程序时收集变量和函数返回值的类型信息,然后将这些信息以类型注释的形式插入到源代码文件中。 首先,要使用MonkeyType,你需要安装这个库,可以通过pip命令来完成: ``` pip ...
这种类型注解允许程序员为变量、函数的参数以及返回值添加静态类型信息。静态类型信息为代码阅读者和某些静态类型检查工具提供了关于变量类型和函数接口的重要信息。 类型注解的使用方法是在变量或参数名后面加上...
dpkg命令安装包,查看系统架构类型命令: dpkg --print-architecture