我一直在使用一个jar文件,它在另一个静态内部类中有一个静态内部类:
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();
[为了清晰而编辑]
[更新
好的,这有点奇怪。如果我从原始项目中获取代码并直接将其导入到我的代码中,我就可以引用内部内部类。但是,当我在jar文件中打包时引用它时,它会失败。 MTK ...
答案 0 :(得分:2)
你忘记了一个空间:
Job.GlobalVars vars = new Job.GlobalVars();
^
这对我来说很好用:
Job.GlobalVars.Variable var = new Job.GlobalVars.Variable();
var.setName("MByD");
答案 1 :(得分: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和Variable的其他类。进口效果非常好。
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();
}
}
答案 2 :(得分:0)
无需导入任何内容。您应该能够通过“Job”类中的名称“Variable”来引用您的内部类:
private List<Variable> variables;
public List<Variable> getVariable()
答案 3 :(得分:0)
你上面说的方式是正确的。您应该检查以确保jar文件位于类路径中,因为这肯定会导致导入失败以及随后的所有声明。
import mypackage.Job.GlobalVars.Variable;
...
Variable v = new Variable();