18

您好,我是 Java 初学者,这是我的问题:我的头等舱包含以下变量:

import java.util.ArrayList;

public class numbers {
    private int number1 = 50;
    private int number2 = 100;
}

我也有这门课:

import java.util.ArrayList;

public class test {
    private numbers number;
}

我的问题是:我想将 number1 和 number2 变量存储到一个 ArrayList 中,然后从类测试中访问这个 ArrayList。我怎样才能做到这一点?

4

5 回答 5

23
import java.util.ArrayList;
public class numbers {
   private int number1 = 50;
   private int number2 = 100;
   private List<Integer> list;

   public numbers() {
       list = new ArrayList<Integer>();
       list.add(number1);
       list.add(number2);
   }

   public List<Integer> getList() {
       return list;
   }
}

和测试类:

import java.util.ArrayList;
public class test {
   private numbers number;

   //example
   public test() {
     number = new numbers();
     List<Integer> list = number.getList();
     //hurray !
   }
}

于 2013-05-09T12:53:03.177 回答
4

您可以通过在课堂上提供来做到这一点numbers

  • 返回 ArrayList 对象本身的方法。
  • 一种返回 ArrayList 的不可修改包装器的方法。这可以防止在不知道类号的情况下修改列表。
  • 提供您希望从类号支持的操作集的方法。这允许类号控制支持的操作集。

顺便说一句,Java 类名是大写的,这是一个严格的约定。

案例 1(简单吸气剂):

public class Numbers {
      private List<Integer> list;
      public List<Integer> getList() { return list; }
      ...
}

案例 2(不可修改的包装器):

public class Numbers {
      private List<Integer> list;
      public List<Integer> getList() { return Collections.unmodifiableList( list ); }
      ...
}

案例3(具体方法):

public class Numbers {
      private List<Integer> list;
      public void addToList( int i ) { list.add(i); }
      public int getValueAtIndex( int index ) { return list.get( index ); }
      ...
}
于 2013-05-09T12:52:55.813 回答
3

您可以执行以下操作:

  public class Numbers {
    private int number1 = 50;
    private int number2 = 100;
    private List<Integer> list;

    public Numbers() {
      list = new ArrayList<Integer>();
      list.add(number1);
      list.add(number2);
    }

    int getNumber(int pos)
    {
      return list.get(pos);
    }
  }

  public class Test {
    private Numbers numbers;

    public Test(){
      numbers = new Numbers();
      int number1 = numbers.getNumber(0);
      int number2 = numbers.getNumber(1);
    }
  }
于 2013-05-09T12:55:43.273 回答
1

两种方式

1)实例化 first class和吸气剂arrayList

或者

2)使arraylist为 static

最后

Oracle 的 Java 基础知识

于 2013-05-09T12:49:58.373 回答
1

将它们放在第一堂课的 arrayList 中,例如:

import java.util.ArrayList;
    public class numbers {

    private int number1 = 50;
    private int number2 = 100;

    public ArrayList<int> getNumberList() {
        ArrayList<int> numbersList= new ArrayList<int>();
        numbersList.add(number1);
        numberList.add(number2);
        ....
        return numberList;
    }
}

然后,在您的测试类中,您可以调用 numbers.getNumberList() 来获取您的 arrayList。此外,您可能希望在您的 numbers 类中创建 addToList / removeFromList 之类的方法,以便您可以按照需要的方式处理它。

您还可以像访问另一个类中声明的变量一样

numbers.numberList;

如果您将其声明为公开。

但在我看来,这不是一个好的做法,因为您可能需要稍后在代码中修改此列表。请注意,您必须将您的课程添加到导入列表中。

如果您能告诉我您的应用程序要求是什么,我将能够更准确地告诉您我认为最好的做法。

于 2013-05-09T13:04:12.067 回答