首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java -访问全局变量和数组

Java -访问全局变量和数组
EN

Stack Overflow用户
提问于 2010-12-15 23:54:41
回答 5查看 7.8K关注 0票数 1

我有一个关于如何访问全局变量和全局数组信息的简单问题。

我有两个Java文件,但是不能访问我的应用程序Optrader.java中的字符串和数组信息。

  1. Optrader.java
  2. OptraderGlobals

我的OptraderGlobal.java文件:

代码语言:javascript
复制
 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文件:

代码语言:javascript
复制
/* Volatility Table Model is  CLASS within Optrader.java */
//Create Volatility Table
class VolatilityTableModel extends AbstractTableModel
{
   public int getColumnCount()
   {
         return OptraderGlobal.columnNames1.length;
    }   
 }

错误:

代码语言:javascript
复制
 non-static variable columnNames cannot be
 referenced from a static context
 return OptraderGlobal.columnNames.length;

此外,我还需要访问Optrader.java中其他类中的全局数组数据。

EN

回答 5

Stack Overflow用户

发布于 2010-12-15 23:57:45

如果您希望字段是全局字段,则需要将其声明为静态字段:

代码语言:javascript
复制
static String[] columnNames = ...

static Object[][] data = ...

如果没有static关键字,这些字段将属于OptraderGlobal的实例,而不属于类本身。

票数 0
EN

Stack Overflow用户

发布于 2010-12-15 23:57:53

将columnNames设为静态。

票数 0
EN

Stack Overflow用户

发布于 2010-12-15 23:58:12

如果您希望某个类具有全局属性,则需要将其声明为static。这意味着该字段与类本身相关联(只有一个副本),而不是为每个实例创建一个新版本。

因为您目前没有这样做,所以您最终在VolatilityTableModel中复制了错误-如果没有某个特定的OptraderGlobal实例,则不能引用该字段。

我建议你看一下关于Object oriented programming的一些资源--无论是这个错误,还是你的整体设计(即全局变量通常是一个糟糕的想法),这表明你可能对这些原则不熟悉。由于Java是一种面向对象的语言,熟悉这种风格将对您有很大的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4451937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档