2011-05-21 58 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