从不同的对象访问对象的内部类

时间:2016-04-07 17:45:44

标签: java

我有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)但是我无法这样做。

感谢任何帮助。

3 个答案:

答案 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类设为privatepublic 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的不同之处在于,他已经改变了你的内部类,改变了一个与原始问题不同的嵌套静态类。 (此外,它不完整,而不是使用静态嵌套类的预期方法)