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

后端 未结 4 1617
逝去的感伤
逝去的感伤 2021-01-05 02:53

I have created an ArrayList like the following:

def list = new ArrayList()

But the codenarc report it is warning like following.

         


        
相关标签:
4条回答
  • 2021-01-05 03:24

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

    def list = [] as ArrayList
    
    0 讨论(0)
  • 2021-01-05 03:31

    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 [:].

    0 讨论(0)
  • 2021-01-05 03:34

    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 = [:] 
    
    0 讨论(0)
  • 2021-01-05 03:42

    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.

    0 讨论(0)
提交回复
热议问题