delphi - 将具有不同通用类型的对象放在一起

标签 delphi generics delphi-2009

给定泛型

TMyClass <T> = class
  ...
end;


有没有办法将多个实例(实例化不同的类型)放在一起

FList : TList <TMyClass>;
FList.Add (TMyClass <Integer>.Create);
FList.Add (TMyClass <String>.Create);


要么

FArray : array [0..1] of TMyClass;
FArray [0] := TMyClass <Integer>.Create;
FArray [1] := TMyClass <String>.Create;


我知道这段代码无法编译。但是有可能实现这样的目标吗?

最佳答案

如果使用TMyClass的祖先创建FList,则可以执行此操作。

泛型不是继承,因此TMyClass不是TMyClass的祖先。

TMyAbstractClass = class
TMyClass <T> = class (TMyAbstractClass)
  ...
end;

FList : TList <TMyAbstractClass>;
FList.Add (TMyClass <Integer>.Create);
FList.Add (TMyClass <String>.Create);

FArray : array [0..1] of TMyAbstractClass;
FArray [0] := TMyClass <Integer>.Create;
FArray [1] := TMyClass <String>.Create;

关于delphi - 将具有不同通用类型的对象放在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1205822/

相关文章:

java - 如何解决 `Raw use of parameterized class ' Comparable'` 警告?

java - 如何满足kotlin中Class<T>的嵌套泛型要求

java - 为什么这个类型参数会保留在字节码中?

delphi - 如何将对象转换为泛型?

datetime - Delphi:格式化日期时间,不带午夜时间部分

windows - Delphi:如何获取具有起始路径的正在运行的应用程序列表?

delphi - {$IFOPT A4}?

delphi - TChromium OnClick

delphi - 如何在dbx中使用Blob参数执行sql命令?