我有一个关于如何访问全局变量和全局数组信息的简单问题,我没有运气。
我有两个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中其他类中的全局数组数据。
答案 0 :(得分:0)
如果您希望字段是全局字段,则需要将它们声明为static:
static String[] columnNames = ...
static Object[][] data = ...
如果没有static
关键字,则这些字段属于OptraderGlobal
的实例,而不属于类本身。
答案 1 :(得分:0)
使columnNames成为静态。
答案 2 :(得分:0)
如果您想要某个类是全局的,则需要将其声明为static
。这意味着该字段与类本身(仅一个副本)相关联,而不是为每个实例创建的新版本。
由于您目前没有这样做,最终您在VolatilityTableModel中复制了错误 - 如果没有OptraderGlobal的某些特定实例,则无法引用该字段。
我建议你看一下处理Object oriented programming的一些资源 - 这个错误,以及你的整体设计(即全局通常是一个坏主意),表明可能缺乏对这些的熟悉原则。由于Java是一种面向对象的语言,熟悉这种风格将无助于你。
答案 3 :(得分:0)
您需要将它们声明为public static
,以便按照您希望的方式访问它们。
public static String[] columnNames
= {"Ex-Date",
"Dividend",
"Actual",
"Yield (%)"
};
public static Object[][] data = {
{"dd/mm/yyyy", new Double(5), new Boolean(false),
{"21/12/2013", new Double(5), new Boolean(false)};
}
您也应该将这些类声明为公共类。
答案 4 :(得分:0)
您必须详细了解member fields in Java。
在您的情况下,如果您希望只在不创建OptTraderGlobal
实例的情况下从其他类访问它们,则必须columnNames
和data
static
。