本文主要记录JAVA中对象的初始化过程,包括实例变量的初始化和类变量的初始化以及 final 关键字对初始化的影响。另外,还讨论了由于继承原因,探讨了引用变量的编译时类型和运行时类型 一,实例变量的初始化 一共有三种方式对实例变量进行初始化: ①定义实例变量时指定初始值 ②非静态初始化块中对实例变量 ...
分类:
编程语言 时间:
2016-10-04 21:09:16
阅读次数:
340
SequenceInputStream(Enumeration<? extends InputStream> e) 通过记住参数来初始化新创建的 SequenceInputStream,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。 SequenceI ...
分类:
编程语言 时间:
2016-10-03 21:22:54
阅读次数:
178
为了解决运行时类型安全问题,JAVA 1.5版本引入泛型——类型形参,可用在类、接口、方法定义时作为一个类型形参,在具体调用接口、类方法时传入类型实参即可。泛型本身不改变具体类结构——相关信息在编译后被擦除,对运行时不产生影响。在使用JAVA集合类List、MAP时建议指定具体的泛型类型,好处时类型... ...
分类:
编程语言 时间:
2016-09-22 19:41:55
阅读次数:
139
Liskov替换原则:子类型(subtype)必须能够替换掉它们的基类型(basetype)。 违反LSP的情形 对于LSP的违反常常会导致以明显违反OCP的方式使用运行时类型检查。通常,会使用一个显式的if语句或者if/else链去确定一个对象的类型,以便于可以选择针对该类型的正确行为。 很显然, ...
分类:
其他好文 时间:
2016-09-08 18:09:45
阅读次数:
151
返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。如果指定的数组能容纳 该 collection,则返回包含此 collection 元素的数组。否则,将根据指定数组的运行时类型和此 collection 的大小分配 一个新数组。如果指定的数组能容纳 ...
分类:
其他好文 时间:
2016-08-25 20:30:52
阅读次数:
156
CLR 最重要的一个特性就是类型安全。CLR 在运行时总能知道一个对象的类型。我们也可以用过调用 GetType方法来得到对象的准确类型。因为该方法是一个虚方法。所以我们不可能利用它来篡改一个类型的信息。 例如:我们不可能重写 Employee 类的 GetType方法使之返回一个SpaceShut ...
分类:
编程语言 时间:
2016-08-19 13:10:23
阅读次数:
163
RTTI 运行时类型识别 typeid dynamic_cast dynamic_cast 注意事项: 1.只能应用于指针和引用之间的转化 2.要转换的类型中必须包含虚函数 3.转换成功返回的是子类的地址,失败返回NULL typeid注意事项: 1.typeid返回一个type_info对象的引用 ...
分类:
其他好文 时间:
2016-08-18 00:53:04
阅读次数:
203
概述反射 通过反射可以提供类型信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象。 反射机制允许程序在执行过程中动态地添加各种功能。 运行时类型标识 运行时类型标识(RTTI),可以在程序执行期间判定对象类型。例如使用它能够确切地知道基类引用指向了什么类型对象。 运行时类型标识,能预先 ...
分类:
Web程序 时间:
2016-08-13 22:22:20
阅读次数:
279
Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。 Class ...
分类:
编程语言 时间:
2016-08-09 12:05:57
阅读次数:
139
virtual 关键字用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象。 例如,此方法可被任何继承它的类重写。 (C#参考) 虚拟成员的实现可由派生类中的重写成员更改 调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员, 如果没有派生类重写该成员, ...