将Java编译器更改为自动转换是否有任何缺点或问题?在下面的示例中,list.get(0)的结果将自动转换为变量hi的类型.
List list = new ArrayList(); list.add("hi"); String hi = list.get(0);
我知道仿制药允许你减少铸造,但他们这样做是以牺牲宣言更难为代价的.对我来说,仿制药的好处是,它们允许你有编译器执行多个规则 - 而不是他们自己减少铸件(但我没有用他们多少让我有些不知情).此提案只会减少要键入的代码量,而不会将其移动到其他位置.此外,还存在无法使用泛型的情况,因为集合可能具有不同的对象.如果根据当前使用情况"看起来太令人惊讶",可能会有语法调整来使用它.
来自:http://jamesjava.blogspot.com/2007/01/automatic-casting.html
Casting是Java编译器忽略类型安全性的明确指令,因此允许自动强制转换将删除特意设计为该语言的一个特性.
我个人喜欢编译器警告和错误,因为在运行时很难找到这种类型的问题(假设编译器设法将一种对象类型强制转换为另一种对象类型).
是的,它会将当前在编译时发现的错误移动到运行时.虽然一些人认为这不是一个巨大的缺点,但那些人使用的是Python,Ruby或Perl而不是Java ;-).