delphi 泛型例子 Tlist<>

本文介绍了一个使用Delphi的Generics.Collections单元中的TList类的简单示例。通过这个例子,读者可以了解如何创建一个整数类型的列表,添加元素,并修改其中的内容。

//使用和  TStringlist 差不多一样 

use Generics.Collections;      //引用单元 

var   st:TList<int64>;   //或者其他类型 

begin

 st:=TList<int64>.create; 

 st.add(123456);

 st.items[0]:=1;

 st.free;

end;

<think>好的,用户现在想了解Java中自定义数组与使用<>定义数组的区别。首先,我需要明确这两个概念的具体含义,可能用户对数组的使用和语法存在疑惑。 首先,在Java中不能直接用于数组的创建,因为类擦除会导致运行时类信息丢失,而数组需要在创建时明确知道组件类。因此,使用new T[size]这样的方式是不允许的,通常会通过强制类转换或使用反射来绕过这个限制。例如,用户可能想创建一个数组,但必须通过强制转换,如(T[]) new Object[size],但这会有未经检查的警告。 接下来,用户提到的“<>定义数组”可能是指使用菱形操作符(diamond operator)在初始化时让编译器推断类,比如List<String> list = new ArrayList<>();。但这里讨论的是数组,所以可能用户指的是像List<String>[]这样的数组,而Java不允许直接创建数组,因为类擦除会导致类不安全。这种情况下,只能用@SuppressWarnings来抑制警告,或者使用通配符类,但这样会限制数组的使用方式。 所以,主要的区别在于语法限制和类安全。自定义数组需要开发者处理类擦除带来的问题,可能使用反射或者强制转换,但存在运行时风险。而使用<>定义的数组(实际上可能指数组的声明)在Java中不被允许,只能通过通配符或其他变通方法,但同样会有类安全问题。 需要给出具体的代码示例来展示这两种情况的不同处理方式。比如,自定义数组类中的数组创建方式,以及尝试声明数组时的错误。同时,要解释Java的类擦除机制如何影响这两种情况,以及为什么Java不允许直接创建数组,以避免潜在的运行时异常。 最后,相关问题需要围绕、数组的限制、类擦除和解决方案展开,帮助用户进一步理解相关概念。</think><< 自定义数组与<>定义数组的主要区别在于类安全性和语法限制。以下是具体分析及示例代码: 1. **自定义数组的实现方式**: ```java class GenericArray<T> { private T[] array; @SuppressWarnings("unchecked") public GenericArray(int size) { // 必须通过强制类转换创建数组 array = (T[]) new Object[size]; } public void set(int index, T value) { array[index] = value; } public T get(int index) { return array[index]; } } ``` **原因**:Java不允许直接实例化数组(如`new T[size]`),因为类擦除会导致运行时类信息丢失。必须通过强制转换Object数组实现,但会产生未经检查的警告。 2. **<>定义数组的限制**: ```java // 以下代码无法通过编译 List<String>[] arrayOfLists = new ArrayList<String>[10]; // 编译错误 // 合法但存在警告的写法 @SuppressWarnings("unchecked") List<String>[] array = new ArrayList[10]; ``` **原因**:Java规范禁止创建参数化类的数组(如`List<String>[]`),因为在运行时会被擦除,可能导致类不安全操作。唯一的合法写法是使用原始类数组并添加警告抑制。 **关键区别**: - 自定义数组通过类转换绕过限制 - <>语法定义数组被语言规范明确禁止 - 数组存在类擦除带来的潜在风险 - 自定义数组需要开发者自行管理类安全
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值