Java -访问全局变量和数组

stszievb  于 2023-05-21  发布在  Java
关注(0)|答案(5)|浏览(136)

我有一个关于如何访问全局变量和全局数组信息的简单问题,我没有运气。
我有两个Java文件,但无法访问应用程序Optrader.java中的字符串和数组信息。

  1. Optrader.java
  2. 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中其他类中的全局数组数据。

enyaitl3

enyaitl31#

如果你希望这些字段是全局的,你需要将它们声明为静态的:

static String[] columnNames = ...

static Object[][] data = ...

如果没有static关键字,字段属于OptraderGlobalinstances,而不是类本身。

vdzxcuhz

vdzxcuhz2#

将columnNames设置为静态。

oyxsuwqo

oyxsuwqo3#

如果你想让某个东西对于一个类是全局的,你需要将它声明为static。这意味着该字段与类本身相关联(只有一个副本),而不是为每个示例创建一个新版本。
由于您目前没有这样做,您最终会在VolatilityTableModel中复制错误-如果没有OptraderGlobal的某些 * 特定 * 示例,您无法引用该字段。
我建议您看一下有关Object oriented programming的一些参考资料--既包括这个错误,也包括您的整个设计(即全局变量通常是一个坏主意),这可能表明对这些原则缺乏熟悉。由于Java是一种面向对象的语言,熟悉这种风格将对您大有帮助。

oewdyzsn

oewdyzsn4#

您需要将它们声明为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)};
                     }

您还应该将类声明为public。

iyzzxitl

iyzzxitl5#

你需要了解更多关于member fields in Java的信息。
在你的例子中,如果你想让它们在不创建OptTraderGlobal示例的情况下从其他类访问,你必须使columnNamesdata成为static

相关问题