gpt4 book ai didi

java - 在 Java 中将类作为参数传递并进行扩展检查

转载 作者:行者123 更新时间:2023-12-02 05:08:35 24 4
gpt4 key购买 nike

我想将一个类作为参数传递给方法并从中访问静态变量,但我想确保该类扩展 MyClass,我怎样才能实现它?这可能吗?

类似于:

public String getClassTag(Class myClass) {
//if myClass extends MyClass
return ((MyClass)myClass).TAG;
}

更新抱歉,我想我解释得很糟糕。基本上我有一个像上面所示的方法,我还有更多扩展 MyClass 的类,并且每个类都“覆盖”参数 TAG,它是 MyClass 的一个字段。我想访问此参数,但显然我无法像 MyClass.TAG 那样访问,因为它不会初始化并且不会包含我需要的值。

最佳答案

您可以声明此方法签名:

void myMethod(Class<? extends MyClass> klass) {
klass.getField("TAG").get(null);
}

但这限制了您获取传入的 klass 实例的方式。例如,类文字和 myObject.getClass() 可以工作,因为有足够的类型信息在编译时存在。

类型检查的运行时变体是

if (!MyClass.class.isAssignableFrom(klass))
throw new ClassCastException("Argument not assignment-compatible with MyClass");

关于java - 在 Java 中将类作为参数传递并进行扩展检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27543799/

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