gpt4 book ai didi

类 Java Delphi 类引用

转载 作者:行者123 更新时间:2023-11-30 06:13:44 24 4
gpt4 key购买 nike

在 Delphi 中有所谓的类引用:

type
TSomeClass = class(TAncestorClass)
.
.
end;
// They are declared with some weird syntax: (I know Java has no type declarations)
type
TSomeClassReference = class Of TSomeClass;

声明这样的声明,它可以作为一个参数

// you can pass TSomeClassReference or any descendant class this function
function ClassFactory (pClassToCreate : TSomeClassReference) : TSomeClass;

// invoke with
var
A : TSomeClass;
B : TSomeClassDerivedFromTSomeClass;

A := ClassFactory (TSomeClass);
B := ClassFactory (TSomeClassDerivedFromTSomeClass);
B := ClassFactory (TAnotherClass); // wrong!

或实例变量

TAnotherClass = class(TAnyClassNotDerivedFromTSomeClass)
.
.
// same: can hold reference to TSomeClass or any descendant
FDriverClass : TSomeClassReference;
end;

var
A : TAnotherClass;

A.FDriverClass := TSomeClass;
A.FDriverClass := TSomeClassDerivedFromTSomeClass;
A.FDriverClass := TAnotherClass; // wrong!

我在 Delphi 中大量使用此类类引用来创建类工厂等。 Java 中是否有用于执行此操作的语法?我的意思是像

public TSomeClass ClassFactory (pClassToCreate TSomeClassReference) 
{...}

public class TAnotherClass extends TAnyClass { 
TSomeClassReference FDriverClass;
}

最佳答案

在 Java 7 中,您可以通过将 .class 添加到类名来获取类引用。

例如

Class<Integer> iClass = Integer.class

但是,如果您想使用工厂,建议在 Java 8 中使用 Supplier,因为它更加灵活。

Supplier<Integer> iSupplier = () -> new Integer(0);
Integer i = iSupplier.get();

关于类 Java Delphi 类引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31480202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com