C# 在Java中,数组继承自什么?我能做这个吗?
很抱歉,我已经习惯了C语言,所以我的Java框架知识不是很好 我有几个阵列:C# 在Java中,数组继承自什么?我能做这个吗?,c#,java,arrays,C#,Java,Arrays,很抱歉,我已经习惯了C语言,所以我的Java框架知识不是很好 我有几个阵列: int[] numbers = new int[10]; String[] names = new String[10]; //populate the arrays 现在,我想创建一个通用函数,它将打印出这些数组中的值,如下所示(这在C#中应该可以工作) 我现在要做的就是 PrintAll(names); PrintAll(numbers); 我如何在Java中做到这一点?Java中数组的继承树是什么 非常感谢
int[] numbers = new int[10];
String[] names = new String[10];
//populate the arrays
现在,我想创建一个通用函数,它将打印出这些数组中的值,如下所示(这在C#中应该可以工作)
我现在要做的就是
PrintAll(names);
PrintAll(numbers);
我如何在Java中做到这一点?Java中数组的继承树是什么
非常感谢
Bones回答关于你上什么课的问题。答案是java.lang.Object 关于迭代应该知道的事情——看看Java,然后
Iterable
。正如其他人所评论的,不幸的是,数组没有实现Iterable
数组只在Java1中实现Serializable
和Cloneable
;因此,没有通用的方法可以做到这一点。您必须为每种类型的数组实现一个单独的方法(因为像int[]
这样的基本数组不能强制转换为Object[]
)
但在这种情况下,您不必这样做,因为您可以为自己这样做:
System.out.println(Arrays.toString(names));
System.out.println(Arrays.toString(numbers));
这将产生如下结果:
[Tom, Dick, Harry]
[1, 2, 3, 4]
请注意,以上内容仅适用于阵列。实现,因此您可以使用:
public static <T> void printAll(Iterable<T> items) {
for (T t : items)
System.out.println(t);
}
publicstaticvoidprintall(Iterable项){
对于(T:项目)
系统输出打印ln(t);
}
请参见。您可以尝试以下方法 (它不适用于int类型,因为它是一个基本类型。您可以使用对象
Integer
)
正如其他答案所述,
int[]
和String[]
没有通用的超类可以让您这样做。您可以做的一件事是在将数组传递给PrintAll()
函数之前,将它们包装在一个列表中。使用Arrays.asList(myArray)
很容易做到这一点。然后,您的PrintAll()
函数可以接收集合
或Iterable
并以这种方式进行迭代。以下是一种查找数组超类(普通对象)的方法
不是答案,而是问题的答案(至少标题)。(我建议Arrays.toString和mmyers已经做过的一样)遗憾的是,数组没有实现
Iterable
。不,它们没有实现,但是对每一个都进行了增强,使用数组和Iterable。考虑到同样的问题,但它包括数组字符串表示;e、 g.“[1,2]”。我不知道这是否合适。只是没有那么多的本机类型,所以添加单个方法应该不会有那么大的负担。有八个原语加上对象,所以如果每个都使用多个方法,可能会变得很乏味。仅供参考:或者更好的是,一个Iterable
。
public static void printAll(Object[] items) {
for (Object o : items)
System.out.println(o);
}
public static void printAll(int[] items) {
for (int i : items)
System.out.println(i);
}
public static void printAll(double[] items) {
for (double d : items)
System.out.println(d);
}
// ...
public static <T> void printAll(Iterable<T> items) {
for (T t : items)
System.out.println(t);
}
public void print(Object[] objects){
for (Object o: objects){
System.out.println(o);
}
}
String[] array = {"just", "a", "test"};
Object obj = array; // not really needed, just as example
System.out.println("class: " + obj.getClass());
System.out.println("super: " + obj.getClass().getSuperclass());