我有一个关于如何访问全局变量和全局数组信息的简单问题。
我有两个Java文件,但是不能访问我的应用程序Optrader.java
中的字符串和数组信息。
我的OptraderGlobal.java文件:
class OptraderGlobal
{
String[] columnNames
= {"Ex-Date",
"Dividend",
"Actual",
"Yield (%)"
};
Object[][] data = {
{"dd/mm/yyyy", new Double(5), new Boolean(false),
{"21/12/2013", new Double(5), new Boolean(false)};
}
}
我的Optrader.java文件:
/* Volatility Table Model is CLASS within Optrader.java */
//Create Volatility Table
class VolatilityTableModel extends AbstractTableModel
{
public int getColumnCount()
{
return OptraderGlobal.columnNames1.length;
}
}
错误:
non-static variable columnNames cannot be
referenced from a static context
return OptraderGlobal.columnNames.length;
此外,我还需要访问Optrader.java中其他类中的全局数组数据。
发布于 2010-12-15 23:57:45
如果您希望字段是全局字段,则需要将其声明为静态字段:
static String[] columnNames = ...
static Object[][] data = ...
如果没有static
关键字,这些字段将属于OptraderGlobal
的实例,而不属于类本身。
发布于 2010-12-15 23:57:53
将columnNames设为静态。
发布于 2010-12-15 23:58:12
如果您希望某个类具有全局属性,则需要将其声明为static
。这意味着该字段与类本身相关联(只有一个副本),而不是为每个实例创建一个新版本。
因为您目前没有这样做,所以您最终在VolatilityTableModel中复制了错误-如果没有某个特定的OptraderGlobal实例,则不能引用该字段。
我建议你看一下关于Object oriented programming的一些资源--无论是这个错误,还是你的整体设计(即全局变量通常是一个糟糕的想法),这表明你可能对这些原则不熟悉。由于Java是一种面向对象的语言,熟悉这种风格将对您有很大的帮助。
https://stackoverflow.com/questions/4451937
复制相似问题