草庐IT

Initialization

全部标签

java - 在 Java 中,可以从构造函数助手初始化最终字段吗?

我有一个最终的非静态成员:privatefinalHashMapmyMap;我想使用构造函数调用的方法对其进行初始化。由于myMap是最终的,我的“帮助”方法无法直接初始化它。当然我有选择:我可以直接在构造函数中实现myMap初始化代码。MyConstructor(StringsomeThingNecessary){myMap=newHashMap();myMap.put("blah","blahblah");//etc...//otherinitializationstuffunrelatedtomyMap}我可以让我的辅助方法构建HashMap,将其返回给构造函数,然后让构造函数将

java - new Class(...){{...}} 初始化习语的含义

这个问题在这里已经有了答案:WhatisDoubleBraceinitializationinJava?(13个回答)关闭5年前。下面代码中的{{...}}block是什么意思?classX{privateYvar1;privateX(){Zcontext=newZ(newSystemThreadPool()){{var1=newY();}};}} 最佳答案 它叫做doublecurlybraceinitialization.(编辑:链接已删除,archivedhere)这意味着您正在创建一个匿名子类,而双括号内的代码基本上是一个构

java - new Class(...){{...}} 初始化习语的含义

这个问题在这里已经有了答案:WhatisDoubleBraceinitializationinJava?(13个回答)关闭5年前。下面代码中的{{...}}block是什么意思?classX{privateYvar1;privateX(){Zcontext=newZ(newSystemThreadPool()){{var1=newY();}};}} 最佳答案 它叫做doublecurlybraceinitialization.(编辑:链接已删除,archivedhere)这意味着您正在创建一个匿名子类,而双括号内的代码基本上是一个构

java - 我应该将初始 java String 值从 null 设置为 ""吗?

我经常有这样的类(class):publicclassFoo{privateStringfield1;privateStringfield2;//etcetcetc}这使得field1和field2的初始值等于null。让我的所有String类字段如下所示会更好吗?publicclassFoo{privateStringfield1="";privateStringfield2="";//etcetcetc}然后,如果我与类定义一致,我会避免很多空指针问题。这种方法有什么问题? 最佳答案 那样就是疯狂(通常)。如果您遇到很多空指针问

java - 我应该将初始 java String 值从 null 设置为 ""吗?

我经常有这样的类(class):publicclassFoo{privateStringfield1;privateStringfield2;//etcetcetc}这使得field1和field2的初始值等于null。让我的所有String类字段如下所示会更好吗?publicclassFoo{privateStringfield1="";privateStringfield2="";//etcetcetc}然后,如果我与类定义一致,我会避免很多空指针问题。这种方法有什么问题? 最佳答案 那样就是疯狂(通常)。如果您遇到很多空指针问

java - 在java中初始化字符串列表的最短方法是什么?

我正在寻找最短的方法(在代码中)来初始化字符串列表和字符串数组,即列表/数组包含"s1","s2","s3"字符串元素。 最佳答案 有多种选择。我个人喜欢使用Guava:Liststrings=Lists.newArrayList("s1","s2","s3");(当然,Guava是一个值得拥有的图书馆:)仅使用JDK,您可以使用:Liststrings=Arrays.asList("s1","s2","s3");请注意,这将返回一个ArrayList,但这不是普通的java.util.ArrayList-它是一个内部可变的但大小固

java - 在java中初始化字符串列表的最短方法是什么?

我正在寻找最短的方法(在代码中)来初始化字符串列表和字符串数组,即列表/数组包含"s1","s2","s3"字符串元素。 最佳答案 有多种选择。我个人喜欢使用Guava:Liststrings=Lists.newArrayList("s1","s2","s3");(当然,Guava是一个值得拥有的图书馆:)仅使用JDK,您可以使用:Liststrings=Arrays.asList("s1","s2","s3");请注意,这将返回一个ArrayList,但这不是普通的java.util.ArrayList-它是一个内部可变的但大小固

java - Java中的默认构造函数和继承

我有一个关于Java中的默认构造函数和继承的问题。一般来说,如果你写一个类并且不包含任何构造函数,Java会自动为你提供一个默认构造函数(一个不带参数的),它用一些默认值(如果有的话)初始化类的所有实例变量(如果有的话)0、null或false)。但是,如果您编写带有一些参数的构造函数,并且不编写任何默认构造函数,则Java不提供默认构造函数。我的问题是:从其他类继承的类是什么情况-如果我编写一个带有一些参数的构造函数,但不包含默认构造函数,它们是否继承了父类(superclass)的默认构造函数? 最佳答案 如果不做构造函数,th

java - Java中的默认构造函数和继承

我有一个关于Java中的默认构造函数和继承的问题。一般来说,如果你写一个类并且不包含任何构造函数,Java会自动为你提供一个默认构造函数(一个不带参数的),它用一些默认值(如果有的话)初始化类的所有实例变量(如果有的话)0、null或false)。但是,如果您编写带有一些参数的构造函数,并且不编写任何默认构造函数,则Java不提供默认构造函数。我的问题是:从其他类继承的类是什么情况-如果我编写一个带有一些参数的构造函数,但不包含默认构造函数,它们是否继承了父类(superclass)的默认构造函数? 最佳答案 如果不做构造函数,th

java - 为什么尝试打印未初始化的变量并不总是导致错误消息

有些人可能会发现它类似于SO问题WillJavaFinalvariableshavedefaultvalues?但是该答案并不能完全解决这个问题,因为该问题不会直接在实例初始化程序block中打印x的值。当我尝试直接在实例初始化程序block内打印x时出现问题,同时在block结束之前为x分配了一个值:案例一classHelloWorld{finalintx;{System.out.println(x);x=7;System.out.println(x);}HelloWorld(){System.out.println("hi");}publicstaticvoidmain(Strin