java - 定义的静态变量计数

标签 java variables static

我是 java 的新手,我想知道是否可以检索用特定名称定义的静态变量的数量?例如:

public static final String DB_CTRLDATA              = "controldata";
public static final String DB_CTRLDATA_CELLADDR     = DB_CTRLDATA  + ".cell_addr";
public static final String DB_CTRLDATA_ID           = DB_CTRLDATA  + ".id";
public static final String DB_CTRLDATA_PRICT        = DB_CTRLDATA  + ".pri_count";
public static final String DB_CTRLDATA_RMODE        = DB_CTRLDATA  + ".rmode";
public static final String DB_CTRLDATA_TOD          = DB_CTRLDATA  + ".tod";
public static final String DB_DWELLDATA             = "dwelldata";
public static final String DB_DWELLDATA_FILENAME    = DB_DWELLDATA + ".filename";
public static final String DB_DWELLDATA_ID          = DB_DWELLDATA + ".id";
public static final String DB_DWELLDATA_OFFSET      = DB_DWELLDATA + ".offset";
public static final String DB_DWELLDATA_SIZE        = DB_DWELLDATA + ".size";
public static final String DB_POSTPROC              = "postproc";
public static final String DB_POSTPROC_ID           = DB_POSTPROC  + ".id";
public static final String DB_POSTPROC_PRESENT      = DB_POSTPROC  + ".present";

我想知道有多少对象被定义为 DB_*。我知道将所有这些放在一个数组中是一种解决方案。

谢谢!

最佳答案

您可以使用反射来做到这一点。您可以使用 Class.getDeclaredFields() 方法访问类中定义的所有字段。然后您可以迭代这些字段并使用 Field.getModifiers()Modifier.isStatic(int) 检查它们的修饰符。如果字段是 static,您可以使用 Field.getName() 检查它的名称。一个简短的例子:

int count = 0;
for (Field field : MyClassName.class.getDeclaredFields()) {
    int modifiers = field.getModifiers();
    if (Modifier.isStatic(modifiers)) {
        if (field.getName().startsWith("DB_")) {
            count++;
        }
    }
}

请注意,您必须处理 Class.getDeclaredFields() 抛出的 SecurityException

关于java - 定义的静态变量计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22236621/

相关文章:

java - 如何使用由静态初始化程序调用的 PowerMockito 在 java 中模拟私有(private)静态方法?

c - 静态变量有什么错误吗?

java - 未获取结果集中的所有行

c# - 将项目从 C# 迁移到 Java

php - 使用字符串+变量获取对象变量

javascript - 在函数外声明变量

PHP:从扩展类的方法访问父类的静态变量

java - 使用 @Service 构造型创建 XsrfProtectedServiceServlet 会引发 NullPointerException

java - MessageDigest.isEqual 函数在 Java 中的使用

variables - Lisp 访问值(Lisp 新手)