Java实体表模型

标签 java swing model jtable entity

我想制作一个表模型,通过列表存储实体。像这样;

List list = new ArrayList<Entity>();
list.add(entity);
tableModel.setEntityVector(list);

在扩展AbstractTableModel的实体表模型中,方法getValueAt(int row, int column)应该根据行和列的值返回实体字段的值。行代表列表中的实体编号,列代表实体对象中的字段编号。但问题是当我使用以下代码时;

Entity entity = list.get(rowCount - 1);
Field[] fields = entity.getClass().getDeclaredFields();

我无法访问对象的字段,因为实体字段必须是私有(private)的。如果我使用的是 getDeclaredMethods() 而不是 getDeclaredFields() 方法,那么我无法使用列参数达到我想要的方法,因为有构造函数、 setter ...

我的问题是;如何使用 AbstractTableModel 的 getValueAt(int row, int column) 方法的列参数获取实体的字段值

最佳答案

您可以使用 getDeclaredFields() 访问类的所有私有(private)字段。请参阅下面给出的代码:

import java.lang.reflect.Field;
import java.util.ArrayList;

class Private {
    private int i = 20;
    public String s = "java";
    private String name = "Object";
    private ArrayList<String> list = new ArrayList<String>()
    {
        {
            add("Hello");add("World");
        }
    };
}
public class Tester
{
    public static void main(String[] st)throws Exception
    {
        Private  p = new Private();
        Field[] fs = p.getClass().getDeclaredFields();
        for (Field f : fs )
        {
            f.setAccessible(true);
            System.out.println(f.get(p));
        }
    }
}

关于Java实体表模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15418255/

相关文章:

java - 在 hibernate 中搜索一条记录(如果存在)然后与表员工链接,否则创建然后链接

asp.net-mvc - 一个命名空间中有多少模型重要吗?

java - 基于 MVC 的 GUI 中模型之间的通信

Java: HashMap 中的复合键

java - dbUnit dtd 错误 : The declaration for element type "dataset" must end with '>'

java - 从文件夹构建 .jar

java - 将数据插入数据库(mongodb)

java - Xpath 中的 boolean 运算 : Using attributes

java - 如何检测两个鼠标按钮是否同时松开?

java - 如何使用 Java/JavaFX MVC 跨多个 Controller 持久保存用户模型的单个实例?