我有一个关于如何访问全局变量和全局数组信息的简单问题,我没有运气。
我有两个Java文件,但无法访问应用程序Optrader.java
中的字符串和数组信息。
- Optrader.java
- OptraderGlobals
我的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中其他类中的全局数组数据。
5条答案
按热度按时间enyaitl31#
如果你希望这些字段是全局的,你需要将它们声明为静态的:
如果没有
static
关键字,字段属于OptraderGlobal
的 instances,而不是类本身。vdzxcuhz2#
将columnNames设置为静态。
oyxsuwqo3#
如果你想让某个东西对于一个类是全局的,你需要将它声明为
static
。这意味着该字段与类本身相关联(只有一个副本),而不是为每个示例创建一个新版本。由于您目前没有这样做,您最终会在VolatilityTableModel中复制错误-如果没有OptraderGlobal的某些 * 特定 * 示例,您无法引用该字段。
我建议您看一下有关Object oriented programming的一些参考资料--既包括这个错误,也包括您的整个设计(即全局变量通常是一个坏主意),这可能表明对这些原则缺乏熟悉。由于Java是一种面向对象的语言,熟悉这种风格将对您大有帮助。
oewdyzsn4#
您需要将它们声明为
public static
,以便以您想要的方式访问它们。您还应该将类声明为public。
iyzzxitl5#
你需要了解更多关于member fields in Java的信息。
在你的例子中,如果你想让它们在不创建
OptTraderGlobal
示例的情况下从其他类访问,你必须使columnNames
和data
成为static
。