java - 无法访问外部成员(member)

标签 java

public class TableModel extends AbstractTableModel {
    public int page;
    public TableModel(Integer p) {                
        this.page=p;
        System.out.println("mm"+page);    
    }

    public void pudata() {
        System.out.println(page);
    }
    //System.out.println("model "+page);
    private String[] columnNames = {"groupName","membersCount","previliage"};

    public ArrayList<GroupData> data = (new DatabaseLayer ()).getGroup(page);

    @Override
    public int getRowCount() {
        return data.size() ;
    }

无法在 getgroup() 方法中访问变量 page,它将 0 传递给 getgroup() 方法。

public ArrayList<GroupData> data = (new DatabaseLayer ()).getGroup(page); 

最佳答案

您的问题不清楚,但我怀疑问题在于所有实例初始值设定项都在构造函数主体之前运行,因此您会看到 page 的默认值.你应该有这样的东西:

public class TableModel extends AbstractTableModel {
    private static final String[] columnNames =
        {"groupName","membersCount","previliage"}; // TODO: Fix spelling!
    private final int page;
    private final List<GroupData> data;

    public TableModel(int page) {
        this.page = page;
        this.data = new DatabaseLayer().getGroup(page);
    }

    ...
}

将所有实例/静态变量声明保留在一个位置(我更喜欢将它们保留在顶部,但是YMMV)并将它们全部设为私有(private),以便更容易推断它们的使用方式,这通常是一个好主意。然而,主要的变化是将 new DatabaseLayer ().getGroup(page) 代码移至构造函数中。

关于java - 无法访问外部成员(member),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17272671/

相关文章:

java - 如果对象数组是对象,为什么字符串数组不是字符串

java - 如何配置 Chrome 的 Java 插件,使其使用机器中现有的 JDK

Java SQL 空对象抛出 MySQLIntegrityConstraintViolationException 而不是自定义异常

java - 将 Applet 转换为 Servlet (Apache)

java - 使用 Java API 加载和保存 Weka 模型?

java - 如何从 Java 客户端检查 hazelcast 集群是否存在?

java - 资源名称中的 spring-way 句柄斜线

java - Apache Tomcat 9 - 浏览器上的 HTTP 状态 404

java - 简单 JPA 到 Postgresql 9.1 HibernateEx

JavaFX 通过 setOnKeyPressed 更新当前位置