2

我想知道是否可以将 a 转换Object为其他东西。

我有一个对象,其中包含一系列随机顺序的数字,例如:3、4、2、5、1,并且想知道我是否能够将其转换为 int[] 或从中选择某些元素,如序列中的数字?

编辑:所以我有一些代码是:

//This contains all the different combinations of the numbers
ArrayList routePop4 = new ArrayList();
//This picks out the first one, just as a test
Object test = routePop4.get(0);

但我的想法是我想遍历测试的每个元素。

4

3 回答 3

2

对象不能“包含一系列数字”。然而,Object 的许多子类,例如所有的Collections都可以“包含一系列数字”,并且它们带有toArray()将集合的内容转换为数组的方法。

如果您有一个集合,但只能作为对象访问它,则需要先转换它,然后才能正确使用它:

ArrayList<Integer> list = (ArrayList<Integer>)test;
Integer[] arr = list.toArray(new Integer[]{});

在日常 Java 中,实际使用转换为 Object 的变量是相当罕见的,如果是,那应该是一个危险信号,表明您可能做错了什么。您可以使用泛型来允许包含其他对象的对象泛型这样做,如下所示:

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1); // Can only add integers, list.add("a string") would fail at compile time
int n = list.get(0); // no need to cast, we know list only contains Integers

正如卢克泰勒的回答所暗示的那样,如果您不使用集合,您可能需要自己滚动。也就是说,如果您可以提供更多信息,您将获得更好的答案,您问题的当前文本在 Java 上下文中没有意义。

于 2012-09-27T17:29:25.363 回答
1

看到您的编辑后,我建议利用泛型。

当您声明 an 时,ArrayList您可以指出它将包含什么样的对象。

例如,如果您知道您的 ArrayList 将包含字符串,您可以这样做:

List<String> myList = new ArrayList<String>();

如果列表中的每个元素都是整数数组,您可以这样做:

List<Integer[]> listOfIntegerArrays = new ArrayList<Integer[]>();

然后您可以从列表中获取任何元素并将其分配给一个整数数组,如下所示:

Integer[] integerArray = listOfIntegerArrays.get(0);

然后你可以像这样遍历列表中的每个整数:

for (Integer loopInteger : integerArray) {
    System.out.println("The value: " + loopInteger);
}

更多关于泛型的阅读:

于 2012-09-27T17:19:27.030 回答
0

你可以这样做:

int[] numbersFromObject = new int[yourObject.getAmountOfNumbers()];

// Initialize array with numbers from array
for(int i = 0; i < yourObject.getAmountOfNumbers(); i++) {
numbersFromObject[i] = yourObject.getNumber(i);

}

我不确定您的对象包含哪些方法,但我相信您将能够适应上面提到的以下内容。

我希望这有帮助。

于 2012-09-27T17:21:06.653 回答