我有A班,B班和C班。
B类是A类的内部类。如下所示:
public class A {
public class B {
String day;
HashMap<String, ArrayList<Date>> locationTimes;
public B() {
locationTimes = new HashMap<String, ArrayList<Date>>();}
}
**B fieldB;**
.....
}
使用依赖注入(可能与问题无关),我将A类的对象注入C类。
我现在试图从类C的不同对象访问类B中的字段(String day,HashMap locationTimes)但是我无法这样做。
感谢任何帮助。
答案 0 :(得分:3)
您必须创建B的实例,如:
public class A {
private B b;
public B getB() {
return b;
}
public static class B {
String day;
HashMap<String, ArrayList<Date>> locationTimes;
public B() {
locationTimes = new HashMap<String, ArrayList<Date>>();
day = "Monday"
}
public String getDay() {
return day;
}
}
}
然后你可以像这样访问B的attrbutes:
public class C {
private A a;
public void doSomething() {
a.getB().getDay();
}
}
修改:您需要将B类设为private
或public static
。
答案 1 :(得分:0)
是的,你需要在某个地方有一个B的实例。
在您的情况下,容器正在创建A的实例,如:
public class C {
@Inject
A a;
void someMethod() {
a.doit();
A.B b = new A.B();
b.doitToo(); // will work
}
}
答案 2 :(得分:0)
我猜你没有内部班级的实例?在这种情况下,你应该自己做。
在外部类中,您可以创建内部类的新实例
public class Outer {
Inner myInner;
public Outer(){
myInner = new Inner();
}
}
如果你需要直接从外部访问内部类,你可以为该实例设置一个getter方法。
这个答案与Dimi的不同之处在于,他已经改变了你的内部类,改变了一个与原始问题不同的嵌套静态类。 (此外,它不完整,而不是使用静态嵌套类的预期方法)