导航:首页 > 源码编译 > 泛型在编译时还是运行时

泛型在编译时还是运行时

发布时间:2024-09-25 01:02:13

java泛型类和泛型方法

1、什么是泛型?
泛型简言之就是类型参数化,不指定类型,运行时传入类型。
如果业务需求有没有可能不指定类型?有没有可能在运行时才知道具体的类型是什么?
所以,就出现了泛型。

public class Container<K, V> {
private K key;
private V value;
public Container(K k, V v) {
key = k;
value = v;
}
public K getKey() {
return key;
}
public void setKey(K key) {
this.key = key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}

编译期,是无法知道K和V具体是什么类型,只有在运行时才会真正根据类型来构造和分配内存。这就是泛型。

㈡ java中什么是泛型,怎么用泛型

最简单的运用:List<String> list = new ArrayList<String>();
这个是什么意思?
意思就是list只装String类型的数据,别的,装不进去
然后你就会觉得这个好像有点封装的意思,比如LIst<Student>,封装学生类
所以,所谓泛型就是广泛的数据类型,你可以把它理解成封装

㈢ c#泛型和java泛型的区别

泛型技术在C#和Java之中的使用方式看似相同,但实现上却有着根本性的分歧,C#里面泛型无论在程序源码中、编译后的IL中(Intermediate Language,中间语言,这时候泛型是一个占位符)或是运行期的CLR中都是切实存在的,List<int>与List<String>就是两个不同的类型,它们在系统运行期生成,有自己的虚方法表和类型数据,这种实现称为类型膨胀,基于这种方法实现的泛型被称为真实泛型。
Java语言中的泛型则不一样,它只在程序源码中存在,在编译后的字节码文件中,就已经被替换为原来的原始类型(Raw Type,也称为裸类型)了,并且在相应的地方插入了强制转型代码,因此对于运行期的Java语言来说,ArrayList<int>与ArrayList<String>就是同一个类。所以说泛型技术实际上是Java语言的一颗语法糖,Java语言中的泛型实现方法称为类型擦除,基于这种方法实现的泛型被称为伪泛型。

阅读全文

与泛型在编译时还是运行时相关的资料

热点内容
一部旧手机怎么做服务器 浏览:885
三洋空调压缩机接线图 浏览:259
python中打印中文 浏览:570
程序员的错误用法 浏览:253
方舟手游私人服务器怎么调倍率 浏览:172
香港孕期吃溯源码燕窝正品 浏览:876
圣剑勇者安卓怎么操作 浏览:543
如何给好友加密消息 浏览:860
视频加密失败怎么办 浏览:502
中国最好的加密机 浏览:717
什么是工艺压缩机 浏览:598
老盖聊技术dos命令 浏览:525
云服务器租多大的 浏览:883
加密和认证哪个好 浏览:184
好游快爆app如何同步 浏览:622
程序员完美办公环境 浏览:408
有关程序员的魔咒 浏览:16
windows工具菜单包含的命令 浏览:565
python中文词语数 浏览:439
安卓直屏播放源码 浏览:54