类模板产生机制

Java允许我们从多种管道为一个class生成对应的Class object。图2是一份整理。

Class object 诞生管道

示例:

1)运用getClass()

注:每个class 都有此函数

String str = "abc";

Class c1 = str.getClass();

2)运用Class.getSuperclass()

Button b = new Button();

Class c1 = b.getClass();

Class c2 = c1.getSuperclass();

3)运用static method------Class.forName()(最常被使用)

Class c1 = Class.forName ("java.lang.String");

Class c2 = Class.forName ("java.awt.Button");

Class c3 = Class.forName ("java.util.LinkedList$Entry");

Class c4 = Class.forName ("I");

Class c5 = Class.forName (".class");

4)运用primitive wrapper classes的TYPE 语法

Class c1 = Boolean.TYPE;

Class c2 = Byte.TYPE;

Class c3 = Character.TYPE;

Class c4 = Short.TYPE;

Class c5 = Integer.TYPE;

Class c6 = Long.TYPE;

Class c7 = Float.TYPE;

Class c8 = Double.TYPE;

Class c9 = Void.TYPE;

图2:Java 允许多种管道生成Class object。

Java classes 组成分析

首先容我以图3的java.util.LinkedList为例,将Java
class的定义大卸八块,每一块分别对应图4所示的Reflection
API。图5则是“获得class各区块信息”的程序示例及执行结果,它们都取自本文示例程序的对应片段。

packagejava.util; //(1)

import java.lang.*; //(2)

public class LinkedList<E> //(3)(4)(5)

extendsAbstractSequentialList<E> //(6)

implements List<E>, Queue<E>,

Cloneable, .Serializable //(7)

{

private static class Entry<E> { … }//(8)

public LinkedList() { … } //(9)

public LinkedList(Collection<? extends E> c) { … }

public E getFirst() { … } //(10)

public E getLast() { … }

private transient Entry<E> header = …; //(11)

private transient int size = 0;

}

类模板产生机制

时间: 2024-10-10 05:23:31

类模板产生机制的相关文章

C++智能指针类模板

1.智能指针本质上是一个对象,这个对象可以像原生的一样来进行使用.原因是智能指针对象对应的类中,将指针相关的操作都进行了重载操作处理,所以才会达到这种像是原生的效果. 2.智能指针的意义: 现在C++开发库中最重要的类模板之一 C++中自动内存管理的主要手段 能够在很大程度上避开内存相关的问题 3.在QT中开发库中也提供了智能指针类模板,在STL标准库中也提供了,在c++的标准库忘了什么名了中也提供了智能指针类模板.所以智能指针类模板在C++中的地位很重要 4.STL中的智能指针类模板 auto

C++提高1 【泛型编程】函数模板 类模板

[本文谢绝转载] [泛型编程] 函数模板 为什么会有函数模板 现象: 函数的业务逻辑一样 函数的参数类型不一样 [最常用]函数模板  显式的调用 [不常用]类型推导 多个参数,参数定义了必须要用 函数模板,实现int类型数组,char字符串排序: 函数模板 与 普通函数的本质区别 函数模板 和 普通函数在一起 的调用型研究: C++是如何支持函数模板机制的? 函数模板机制结论 类模板 类模板的定义 类模板做函数的参数 类模板的派生成普通类 模板类的派生成模板类 复数类,所有函数都写在类的内部,运

类模板和函数模板

函数模板: 函数模板全特化:所谓特化,是指相对普通模板的特化,是另外一个模板.但不是实例,只是模板 template <class T>                                      //普通函数模板,泛型T mymax(const T t1, const T t2){   return t1 < t2 ? t2 : t1;} template <>const char* mymax(const char* t1,const char* t2)  

C++类模板笔记

今天在写一个链表类模板,然后我和平时写类一样,将头文件.h和.cpp分开写,然后编译器一直提示 类函数全是无法解析的外部命令,后面经查找资料,原来是因为: 模板定义很特殊. 由template<-> 处理的任何东西都意味着编译器在当时不为它分配存储空间,它一直处于等待状态直到被一个模板实例告知.在编译器和连接器的某一处,有一机制能去掉指定模板的多重定义.所以为了容易使用,几乎总是在头文件中放置全部的模板声明和定义.

C++ 模板的编译 以及 类模板内部的实例化

在C++中,编译器在看到模板的定义的时候,并不立即产生代码,只有在看到用到模板时,比如调用了模板函数 或者 定义了类模板的 对象的时候,编译器才产生特定类型的代码. 一般而言,在调用函数的时候,只需要知道函数的声明即可: 在定义类的对象时,只需要知道类的定义,不需要成员函数的定义. 但是,这对于模板编译是不奏效的,模板要进行实例化,则必须能够访问定义模板的源代码,当调用函数模板以及类模板的成员函数 的时候,需要知道函数的定义. 标准C++对于模板的编译提供了两种策略: 相同之处:"将类定义以及函

C++入门经典-例9.3-类模板,简单类模板

1:使用template关键字不但可以定义函数模板,而且可以定义类模板.类模板代表一族类,它是用来描述通用数据类型或处理方法的机制,它使类中的一些数据成员和成员函数的参数或返回值可以取任意数据类型.类模板可以说是用类生成类,减少了类的定义和数量. 2:类模板的一般定义形式如下: template <类型形式参数表> class 类模板名 { ...//类模板体 } 类模板成员函数的定义形式如下: template <类型形式参数表> 返回类型 类模板名 <类型名表>::

泛函编程—模板函数_类模板

函数业务逻辑一样,只是函数参数类型不同函数模板的本质:类型参数化——泛型编程 语法: template <typename T> template <class T1,class T2>多个参数类型 类型 函数名(形式参数表) { 语句序列: } 函数模板基础: template是告诉C++编译器,开始泛型编程,看到T,不要随便报错 template <typename T>//一个模板 void myswap(T& a, T& b) { T c; c

第61课 智能指针类模板

1. 智能指针的意义 (1)现代C++开发库中最重要的类模板之一 (2)C++中自动内存管理的主要手段 (3)能够在很大程度上避开内存相关的问题(如内存泄漏.内存的多次释放等) 2. STL中的智能指针 (1)auto_ptr智能指针 ①生命周期结束时,销毁指向的内存空间 ②只能用来管理单个动态创建的对象,而不能管理动态创建的数组.即不能指向堆数组,只能指针堆对象(变量) int* pn = new int[100]; auto_ptr<int> ap(pn); //auto_ptr指向堆数组

智能指针类模板(五十)

我们之前在 C++ 的学习中学习了有关智能指针的知识.那么智能指针的意义是现代 C++ 开发库中最重要的类模板之一:是 C++ 中自动内存管理的主要手段,它能够在很大程度上避开内存相关的问题.在 STL 标准库中的智能指针为 auto_ptr,它的特点是:1.生命周期结束时,销毁指向的内存空间:2.不能指向堆数组,只能指向堆对象(变量):3.一片堆空间只属于一个智能指针对象:4.多个智能指针对象不能指向同一片堆空间. 下来我们就来使用下 auto_ptr 智能指针 #include <iostr