gpt4 book ai didi

java - 从 Class 变量访问静态字段

转载 作者:行者123 更新时间:2023-12-02 08:06:58 25 4
gpt4 key购买 nike

我有以下情况(我知道这听起来不真实,但我简化了它以便更好地理解):

  • 一个class A ,带有 public static int f;声明
  • 其他类(class) B, C, D, ... 扩展A
  • 一种方法 foo (在其他地方,并不重要)具有以下签名:int foo(Class< A> classz);

现在我希望此方法实现返回静态字段 f 的值,来自 classz 代表的类; A 的子类可能有不同的值。我不想使用反射(也不想使用新的 jdk7 invoke.* 功能)。目前,我有一个可行的解决方案,但效果不佳,因为它实例化了一个对象(这不是必需的),并通过从实例访问静态字段来生成警告:

int foo(Class< A> classz) throws [don't matter] {
return classz.newInstance().f;
}

有什么建议吗?提前致谢?

PS:不知道如何输入Class< ?>没有空间...

最佳答案

目前还不清楚您要做什么或为什么要通过类(class) - 看起来您应该只需要:

int foo() {
return A.f;
}

成功后,这就是您当前的代码将返回的内容。您的代码相当于:

int foo(Class<A> classz) throws ... {
A ignored = classz.newInstance();
return A.f;
}

听起来您尝试对静态字段使用多态性 - 这根本行不通。静态成员不是多态的,字段也不是多态的。如果您在每个子类中声明额外的 f 字段,您必须使用反射来获取它们,但我建议您无论如何重新设计。如果您没有在每个子类中声明额外的 f 字段,那么您无论如何都只有一个字段 - B.fC.f无论如何,基本上都会解析为A.f...

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