尽管您失去了输入安全性,但使用原始Object类数组能够拥有多类型数组是不是很糟糕?
要理解的代码:
var expression = "var1/var2+Math.sqrt(var3)";
eval( 'function myTest(var1,var2,var3){ return ' + expression + "}" );
console.log(myTest, myTest(1, 2, 9) );
答案 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是强类型的。拥抱,不要打它。你以后会感谢我。