2015-12-31 71 views
-2

我在處理另一個類中的arraylist元素時遇到了一個問題。我有2個班級:A級和B級。如何在任何類的私有成員中打印ArrayList值

class A { 
    private ArrayList<String> temp=new ArrayList<String>(); 
    temp.add("abc"); 
    temp.add("XYZ"); 
    public ArrayList<String> getTemp() { 
     return this.temp; 
    } 
} 

public class B 
{ 
    private A a=null; 
    public b(A aa) 
    { 
     this.a = aa; 
    } 
    System.out.printLn(a.getTemp.size());//output is 2 
    System.out.printLn(a.getTemp.get(0));//null 
} 

爲什麼它給我null?請簡單說明一下。

+9

你的代碼有很多錯誤。 *(代碼在任何方法之外,構造函數名稱不符合類的..)* –

回答

1

你目前的代碼甚至不會編譯。此外,我可以保證100%,如果通過一些魔法你的代碼編譯第一​​個printLn的輸出決不會是2。這將是null。 `

2

這裏是你想達到什麼樣的一個工作版本:

A.java

A類,你應該在構造函數中添加元素到您的ArrayList

public class A { 
    private ArrayList<String> temp=new ArrayList<String>(); 

    public A() { 
     temp.add("abc"); 
     temp.add("XYZ"); 
    } 

    public ArrayList<String> getTemp() { 
     return this.temp; 
    } 
} 

B.java

構造名稱應與類的:

public class B { 
    private A a=null; 

    public B(A aa) 
    { 
     this.a = aa; 
    } 
} 

App.java

public class App { 
    public static void main(String[] args) { 
     A a = new A(); 
     System.out.println(a.getTemp().size()); 
     System.out.println(a.getTemp().get(0)); 
    } 
} 

輸出:

2 
abc 
1
 **First Of All Your Code Is Not Impossible to run** 
    You Can't assign value to instance variable directly in side of class without constructor or method so your modified class A must be like 
    **A.java** 
    class A { 
       private ArrayList<String> temp=new ArrayList<String>(); 

       public A() 
       { 
         temp.add("abc"); 
         temp.add("XYZ"); 
       } 

       public ArrayList<String> getTemp() 
       { 
         return this.temp; 
       } 
    } 

       OR Like 

    class A { 
       private ArrayList<String> temp=new ArrayList<String>(); 

       public A() 
       { 
        initialize(); 
       } 

       public void initialize() 
       { 
         temp.add("abc"); 
         temp.add("XYZ"); 
       } 


       public ArrayList<String> getTemp() 
       { 
         return this.temp; 
       } 
    } 

    And Then As per Above Your Class B will Be 
    **B.java** 
    class B 
      { 
        private A a=null; 

        public B(A aa) 
        { 
         this.a = aa; 
        } 

      } 

    And Then you have to go for main method like 

    **Temp.java** 
    public class Temp { 
         public static void main(String... args) 
         { 
          A a = new A(); 
          B b = new B(a); 



          System.out.println(a.getTemp().size());//output is 2 
          System.out.println(a.getTemp().get(0));//abc 
} 

}

相關問題