开发者

what are the different ways to create an Arraylist and Hashmap in groovy

I have created an ArrayList like the following:

def list = new ArrayList()

But t开发者_JAVA技巧he codenarc report it is warning like following.

ArrayList objects are better instantiated using the form "[] as ArrayList"

What are the better ways to instantiate the collections?


You can do:

def list = []               // Default is ArrayList
def list = [] as ArrayList
ArrayList list = []

And again, for HashMap:

HashMap map = [:]
def map = [:] as HashMap

The default in this case is a LinkedHashMap:

def map = [:] 


Typical is:

def list = []

other options include

def list = new ArrayList()
def list = new ArrayList<Foo>()
List list = new ArrayList()
def list = [] as ArrayList
List list = [] as ArrayList

and of course:

List<Foo> list = new ArrayList<Foo>();

Similar options exist for HashMap using [:].


But the codenarc report it is warning like following.

ArrayList objects are better instantiated using the form "[] as ArrayList"

IMO, this is bad advice on Codenarc's part as it assumes that the implementation type of [] is ArrayList. This is true today, but may not always be.

The simplest/best/usual way to create a List implementation is:

def list = []

If possible, I will usually write something like

List<String> list = []

Just to make it a bit more obvious what this list should contain, i.e. for the sake of code readability. If I wanted to create a specific type of list I would instantiate a List "the Java way"

List<String> list = new SomeCustomListImplementation<String>()

But in practice I can't remember ever doing this.


Why don't you just use a suggestion from codenarc?

def list = [] as ArrayList
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜