当前位置: 首页 > 面试题库 >

仅检索Java类中声明的静态字段

仲高超
2023-03-14
问题内容

我有以下课程:

public class Test {
    public static int a = 0;
    public int b = 1;
}

是否可以使用反射仅获取静态字段的列表?我知道我可以使用来获得所有字段的数组Test.class.getDeclaredFields()。但是似乎无法确定Field实例是否代表静态字段。


问题答案:

您可以这样做:

Field[] declaredFields = Test.class.getDeclaredFields();
List<Field> staticFields = new ArrayList<Field>();
for (Field field : declaredFields) {
    if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
        staticFields.add(field);
    }
}


 类似资料:
  • 问题内容: 在方法内部声明局部内部类时,为什么包含最终的静态String或int是合法的,而包含其他对象却不合法? 例如: 编译时,得到以下信息: 为什么要区分?是因为String是不可变的吗?如果是这样,Integer.valueOf()也无效吗? 问题答案: 这是因为前两个静态成员分配给原始类型或String类型的编译时常量。 根据Java语言规范的第8.1.3节: 8.1.3。内部类和封闭实

  • 问题内容: 我想在中实现常量,因为在代码中找到常量是很有意义的。 到目前为止,我一直在使用静态方法实现以下变通方法: 我知道有可能摆弄原型,但许多人建议不要这样做。 有没有更好的方法在ES6类中实现常量? 问题答案: 您可以执行以下操作: 从 模块中 导出a 。根据您的用例,您可以: 并在必要时从模块导入该文件。或者,基于您的静态方法思想,您可以声明一个get访问器: 这样,您将不需要括号: 然后

  • 本文向大家介绍Java使用静态声明常量,包括了Java使用静态声明常量的使用技巧和注意事项,需要的朋友参考一下 示例 由于该static关键字用于访问没有实例化类的字段和方法,因此可以用来声明用于其他类的常量。这些变量将在类的每个实例中保持不变。按照惯例,static变量始终是ALL_CAPS并且使用下划线而不是驼峰式大小写。例如: 由于常量不能更改,static因此也可以与final修饰符一起使

  • 问题内容: 为什么不能在Java中将类声明为静态类? 问题答案: 只有嵌套的类可以是静态的。这样,你可以使用嵌套类而无需外部类的实例。

  • 问题内容: 我试图找到为什么不能将类创建为静态类的原因?喜欢: 问题答案: 在Java中,关键字通常将一个方法或字段标记为不存在,而不是每个类实例一次,而是一次。一个类一旦存在就已经存在,因此实际上,所有类都以这种方式是“静态的”,并且所有对象都是该类的实例。 确实对 内部 类具有含义,这是完全不同的:通常,内部类实例可以访问与其绑定的外部类实例的成员,但是如果内部类为,则它没有这样的引用并且可以

  • 问题内容: 我有一个快速的问题。在静态关键字声明之后立即开始的代码块,那是什么类型的方法?我从未见过。如果有人能启发我,将不胜感激。谢谢。 问题答案: 这不是方法,而是类的静态Initializer块。您可以在Java Language Specification中 阅读有关它的更多信息。 加载该类后,其中的代码将执行一次。