如何获取java类中的属性数量?
我有一个java类,其中包含数据库表的所有列作为属性(成员变量)以及相应的getter和setter。
我想在这个类中有一个方法,调用返回列数(即类中的属性数)?如何在不对数字进行硬编码的情况下实现这一点?我愿意接受一般的批评和建议。谢谢。getColumnCount()
我有一个java类,其中包含数据库表的所有列作为属性(成员变量)以及相应的getter和setter。
我想在这个类中有一个方法,调用返回列数(即类中的属性数)?如何在不对数字进行硬编码的情况下实现这一点?我愿意接受一般的批评和建议。谢谢。getColumnCount()
检查反射 API。如果所讨论的类实际上是纯Javabean,则可以按如下方式获取字段(属性或列)的数量:
public int getColumnCount() {
return getClass().getDeclaredFields().length;
}
然而,我高度质疑这样做的必要性。如果您更详细地阐述了您认为需要此方法/解决方案的功能需求,那么我们也许能够提出更好的方法。
制作一个像“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;
}