实例化对象时,为什么要指定该类两次?
OddEven number = new OddEven();
Run Code Online (Sandbox Code Playgroud)
你为什么不能说出来number = new OddEven();?当我声明一个字符串时,我只说String一次:
String str = "abc";
Run Code Online (Sandbox Code Playgroud)
实际上,我的问题不是"为什么你这样做" - 显然,你这样做是因为你必须 - 但是,为什么创作者选择让Java语法像这样工作呢?
我的想法是:
ArrayListJava中的典型声明具有以下类型:
ArrayList<Object> name = new ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)
同样,对于数组,我们有:
Object[] name = new Object[size];
Run Code Online (Sandbox Code Playgroud)
现在,我们当然不能声明以下类型:
ArrayList<Object> name = new ArrayList<AnotherObject>();
Run Code Online (Sandbox Code Playgroud)
两次指定同一对象的类型和名称对我来说似乎总是多余的.上述声明中的冗余可以通过以下方式轻松完成:
ArrayList<Object> name = new();
Run Code Online (Sandbox Code Playgroud)
是否有任何特定的原因,我错过了为什么它按照它的方式完成?
这个问题实际上是我提到的关于Java的两个问题之一,我不明白这个语法足以理解/什么/要问,但这是我在编码中看到的东西:
HibernateUtil hibUtil = new HibernateUtil(ORDB_CFG, AS400_CFG);
Run Code Online (Sandbox Code Playgroud)
我知道HibernateUtil所在的位置.
我不明白的是,为什么它还hibUtil在表达式中的var之前指定?如果我做或不做,有什么不同?
所以我最近开始学习面向对象理论的基础知识,并且已经通过java实践了这一点.我的问题很简单,"为什么班级名称和建设者名称应该相同"?
现在我已经阅读了这个问题 - >
即使这种反应有意义,降低关键字的使用,在我看来能够更有意义地能够以不同的方式命名构造函数并独立于类.现在,如果我没记错的话(稍微通过快速Google验证),语法如下:
className objectName = New constructorName(variables)
Run Code Online (Sandbox Code Playgroud)
所以我的观点是你已经将你想要创建对象的类命名为,为构造函数再次调用相同的名称有什么意义?你不妨写一下
className objectName = New (vars);
Run Code Online (Sandbox Code Playgroud)
看到两者提供完全相同的信息.
在我看来,能够独立命名你的构造函数以更好地了解它究竟是做什么会更加语义,例如
thisClass thisObject = New thisConstructorMakesThis(vars)
Run Code Online (Sandbox Code Playgroud)
除了上面链接中给出的响应之外,是否有一些文档可以解释为什么构造函数和类被命名为相同?
另外我注意到响应甚至没有明确提到动态命名构造函数的考虑,而是一个"显式语法",它听起来更像是一个绝对的构造函数名称.