如何获取java类中的属性数量?

2022-09-04 06:57:07

我有一个java类,其中包含数据库表的所有列作为属性(成员变量)以及相应的getter和setter。

我想在这个类中有一个方法,调用返回列数(即类中的属性数)?如何在不对数字进行硬编码的情况下实现这一点?我愿意接受一般的批评和建议。谢谢。getColumnCount()


答案 1

检查反射 API。如果所讨论的类实际上是Javabean,则可以按如下方式获取字段(属性或列)的数量:

public int getColumnCount() {
    return getClass().getDeclaredFields().length;
}

然而,我高度质疑这样做的必要性。如果您更详细地阐述了您认为需要此方法/解决方案的功能需求,那么我们也许能够提出更好的方法。


答案 2

制作一个像“DatabaseColumn”这样的注释,使用它来使哪些字段映射到表列。您可以对字段或 getter 方法使用批注。因此,对于不在数据库表中使用的瞬态字段是安全的。

// in this sample annotation used for getter methods
public int getColumnCount() {
    int count = 0;
    Method[] methods = getClass().getDeclaredMethods(); 
    for (Method method : methods) {
        if (method.isAnnotationPresent(DatabaseColumn.class)) {
            count++;
        }
    }
    return count;
}