“对象”类的数组

时间:2016-02-18 19:04:58

标签: java arrays object

尽管您失去了输入安全性,但使用原始Object类数组能够拥有多类型数组是不是很糟糕?

要理解的代码:

var expression = "var1/var2+Math.sqrt(var3)";
eval( 'function myTest(var1,var2,var3){ return ' + expression + "}" );
console.log(myTest, myTest(1, 2, 9) );

1 个答案:

答案 0 :(得分:5)

是的,将Object[]用作完全通用的数组是不好的,因为会丢失类型安全性。

Java是一种强类型语言。这有很多好处,主要的好处是如果你编写好代码就会在编译时捕获许多运行时错误。如果你试图与之斗争(通过制作所有Object和朋友),你就会反对Java的自然激励,并且你将会遇到困难。

让我们假设您初始化一个特别充满字符串的Object[],例如:

Object[] arr = {"Hello", "World"};

但是你想要第一个字符串的长度。你不能只做以下

int len = arr[0].length();

因为java不再知道arr [0]是一个String。相反,您必须显式地执行转换为字符串以使用方法

int len = ((String) arr[0]).length();

相反,如果您已将数组初始化为String[],则可以在从数组中获取的任何对象上调用字符串方法,因为它们必须是String

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

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