Java “的数组”;“对象”;班

Java “的数组”;“对象”;班,java,arrays,object,Java,Arrays,Object,尽管您失去了类型安全性,但使用基本对象类数组来拥有多类型数组是否不好 要理解的代码: public class testobject { public static void main (String[] args){ Object[] obj = new Object[5]; obj[0] = "Cat"; obj[1] = 7; obj[2] = new Object(); for(int i =

尽管您失去了类型安全性,但使用基本对象类数组来拥有多类型数组是否不好

要理解的代码:

public class testobject {

    public static void main (String[] args){

        Object[] obj = new Object[5];
        obj[0] = "Cat";
        obj[1] = 7;
        obj[2] = new Object();

        for(int i = 0; i < obj.length; i++){
            System.out.println(obj[i]);
        }

    }

}
公共类testobject{
公共静态void main(字符串[]args){
Object[]obj=新对象[5];
obj[0]=“Cat”;
obj[1]=7;
obj[2]=新对象();
for(int i=0;i
是的,将
对象[]
用作完全通用的数组是不好的,因为您会丢失类型安全性

Java是一种强类型语言。这有很多好处,主要的一点是,如果代码编写良好,许多运行时错误会在编译时被捕获。如果你试图与之抗争(通过让一切
对象
和朋友),你就违背了Java的自然激励,你将经历一段艰难的时光

假设您初始化了一个专门充满字符串的
对象[]
,如下所示:

Object[] arr = {"Hello", "World"};
但是你需要第一个字符串的长度。你不能只做以下事情

int len = arr[0].length();
因为java不再知道arr[0]是字符串。相反,您必须显式地对字符串执行强制转换才能使用该方法

int len = ((String) arr[0]).length();
相反,如果已将数组初始化为
String[]
,则可以对从数组中获取的任何对象调用String方法,因为它们必须是
String
s

String[] arr = {"Hello", "World");
int len = arr[0].length(); //--> 5

TL;DR:Java是强类型的。拥抱它,不要反抗。你以后会感谢我的。

你不应该那样做。你想解决什么问题?这不是一个问题,而是一个概念性的问题。我一直在用PHP做这件事,所以我想知道Java中是否有亲戚。它是不安全的,但是在一些简单的情况下它是有用的。是的,它很糟糕。它是懒惰的,不是类型安全的,而且你最好创建一个实际的类来将数据保存在正确类型的命名字段中。我认为没有其他问题——但是缺少类型安全性很糟糕——是的,很糟糕。类型是重要和有用的,最好保留它们。此外,使用原始数组很少有用;使用
列表
,您通常会感觉更好。非常好且直接的解释。使用特定于类型的方法解决了这个问题。