Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Java中,数组继承自什么?我能做这个吗?_C#_Java_Arrays - Fatal编程技术网

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中数组的继承树是什么 非常感谢

很抱歉,我已经习惯了C语言,所以我的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());