Tag: language design

Java静态导入

通过实验,我发现即使在静态上下文中,Java非静态方法也会覆盖范围内所有相同的命名方法。 即使不允许参数重载。 喜欢 import java.util.Arrays; import static java.util.Arrays.toString; public class A { public static void bar(Object… args) { Arrays.toString(args); toString(args); //toString() in java.lang.Object cannot be applied to (java.lang.Object[]) } } 我在规范中找不到任何相关内容。 这是一个错误吗? 如果不是,有没有理由实施这样的语言? UPD:Java 6不编译此示例。 问题是 – 为什么?

Java的Serializable或Cloneable等标记接口的设计是否已在C#中进化?

Java在其标准库中提供了java.io.Serializable和java.lang.Cloneable (以及对语言和JVM的特殊支持),用于反序列化/序列化/克隆的任务。 C#选择了不同的路径来提供这种function,使用它的实现和代码与Java有何不同,为什么这样做? 例如,为什么C#同时使用属性(注释)和接口进行序列化?

为什么可选参数必须出现在声明的末尾

在所有支持可选参数的编程语言中,我都看到可选参数必须出现在声明的末尾。 可选项目后可能不包含必需参数。 这是什么原因? 我想这可能是编译器/解释器的要求。