2011-05-21 72 views
0

我一直給一個jar文件使用具有另一種靜態內部類中的靜態內部類中靜態嵌套類:實例化/引用Static Nested Class和

package externalJarFile; 

public class Job 
{ 
    public static class GlobalVars 
    { 
    private List<Job.GlobalVars.Variable> variables; 
    public List<Job.GlobalVars.Variable> getVariable() 
    { 
     if (this.variables == null) { 
      this.variables = new ArrayList<Job.GlobalVars.Variable>(); 
     } 
     return this.variables; 
    } 

    public static class Variable 
    { 
     String name; 
     String value; 
     public String getName() { return name; } 
     public void setName(String name) { this.name = name; } 
     public String getValue() { return value; } 
     public void setValue(String value) { this.value= value; } 
    } 
    } 
} 

我遇到的問題是,我需要填充「Job.GlobalVars」列表,但我無法弄清楚如何引用「變量」類型。每當我補充一下:

import externalJarFile.Job.GlobalVars.Variable; 

我得到一個編譯錯誤類型爲「externalJarFile.Job.GlobalVars.Variable」不能被引用。我如何創建一個新的「變量」實例添加到「GlobalVars.getVariable()」列表中?

這裏,我試圖(但沒有成功)的一個片段:

Job.GlobalVars vars = new Job.GlobalVars(); 
Job.GlobalVars.Variable v = new Job.GlobalVars.Variable(); 

[編輯的清晰度]

[UPDATE]

好吧,這是有點奇怪的。如果我從原始項目中獲取代碼並直接將其導入到我的項目中,則可以引用內部類內部類。但是,當我將它引用到jar文件中時,它會失敗。 MTK ...

回答

0

類工作:

package mypackage; 

import java.util.ArrayList; 
import java.util.List; 

public class Job { 
     public static class GlobalVars 
     { 
     private List<Variable> variables; 
     public List<Variable> getVariable() 
     { 
      if (this.variables == null) { 
       this.variables = new ArrayList<Variable>(); 
      } 
      return this.variables; 
     } 

     public static class Variable 
     { 
      String name; 
      String value; 
      public String getName() { return name; } 
      public void setName(String name) { this.name = name; } 
      public String getValue() { return value; } 
      public void setValue(String value) { this.value= value; } 
     } 
     } 
} 

使用GlobalVars和其他變量類。導入工作非常好。

package mypackage; 

import mypackage.Job.GlobalVars; 
import mypackage.Job.GlobalVars.Variable; 

public class RunIt { 
    public static void main(String[] args) { 
     GlobalVars vars = new GlobalVars(); 
     Variable v = new Variable(); 
    } 
} 
0

無需導入任何東西。你應該能夠通過它的名字,只是指你的內部類,「變」,從「工作」類:

private List<Variable> variables; 

    public List<Variable> getVariable() 
+0

問題是我不在「Job」類。 Job類和內部類都在外部jar文件中。我必須從另一個課程中引用它。所以,我沒有問題導入「externalJarFile.Job.GlobalVars」,但是當我嘗試導入「mypackage.Job.GlobalVars.Variable」時,它失敗了。對不起,如果我沒有說清楚。 – pconrey 2011-05-21 14:41:22

2

你忘了空間:

Job.GlobalVars vars = new Job.GlobalVars(); 
      ^

這工作對我很好:

Job.GlobalVars.Variable var = new Job.GlobalVars.Variable(); 
var.setName("MByD"); 
0

他們以上所述的方式是正確的。您應該檢查以確保jar文件在您的類路徑中,因爲這肯定會導致導入失敗,並隨後導致所有將來的聲明。

import mypackage.Job.GlobalVars.Variable; 
... 
Variable v = new Variable(); 
+0

謝謝。 jar文件在路徑中,因爲「GlobalVars」類的導入工作正常。 – pconrey 2011-05-21 15:26:05