Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #34292

Re: hashtables syntax

From Eric Sosman <esosman@comcast-dot-net.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: hashtables syntax
Date 2016-05-15 07:44 -0400
Organization A noiseless patient Spider
Message-ID <nh9n7r$ira$1@dont-email.me> (permalink)
References <nh954m$bu8$1@reader1.panix.com>

Show all headers | View raw


On 5/15/2016 2:31 AM, Popping mad wrote:
>
> This whole syntax is new and strange to me, seemingly illogical
>
>    private static HashMap<String, Type[]> functions; // built-in
> function types
>
>     static { // initialize function types
>         functions = new HashMap<>();
>         functions.put("floor",      new Type[]{Type.FLOAT, Type.INT});
>         functions.put("sqrt",       new Type[]{Type.FLOAT, Type.FLOAT});
>         functions.put("log",        new Type[]{Type.FLOAT, Type.FLOAT,
> Type.FLOAT});
>         functions.put("random",     new Type[]{Type.FLOAT});
>         functions.put("parseInt",   new Type[]{Type.STRING, Type.INT});
>         functions.put("parseFloat", new Type[]{Type.STRING, Type.FLOAT});
>         functions.put("readLine",   new Type[]{Type.STRING});
>         functions.put("showInt",    new Type[]{Type.INT, Type.STRING});
>         functions.put("showFloat",  new Type[]{Type.FLOAT, Type.STRING});
>     }
>
>
> If we are creating a private static Hashmap with template elements of a
> String and and array of Types, then why do I have to call
>
> functions = new HashMap<>();

     You need to create the HashMap before you can start filling it.
You can't put the animals into the Ark before the Ark is built.

> and why nothing in the template.  And what does static do in this case?

     By "template" I guess you mean the <> angle braces?  That's where
the type parameters would go, just as in the declaration.  In fact, it
would be perfectly legal to repeat the parameters -- but since Java can
figure them out for itself ("Hmmm: They're probably the same types as
I already saw when `functions' was first declared!"), why bother?

     As for `static', I'm not sure which of the two appearances confuses
you.  The first `private static ... functions;' means that `functions'
belongs to the class as a whole, not to any instance of the class.  If
`static' weren't there, each instance of the class would have its very
own `functions' map.  The second appearance `static { // initialize ...'
means that this code belongs to the class as a whole and not to any
particular instance; it will execute when the class itself is being
set up -- and thus, will populate `functions' on behalf of the class.

-- 
esosman@comcast-dot-net.invalid
"Don't be afraid of work. Make work afraid of you." -- TLM

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

hashtables syntax Popping mad <rainbow@colition.gov> - 2016-05-15 06:31 +0000
  Re: hashtables syntax Lew <lewbloch@gmail.com> - 2016-05-14 23:52 -0700
    Re: hashtables syntax Popping mad <rainbow@colition.gov> - 2016-05-15 10:23 +0000
      Re: hashtables syntax Lew <lewbloch@gmail.com> - 2016-05-15 09:33 -0700
        Re: hashtables syntax Lew <lewbloch@gmail.com> - 2016-05-15 09:35 -0700
      Re: hashtables syntax Eric Douglas <e.d.programmer@gmail.com> - 2016-05-16 06:10 -0700
  Re: hashtables syntax Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-05-15 07:44 -0400
    Re: hashtables syntax ruben safir <ruben@mrbrklyn.com> - 2016-05-16 01:26 -0400
      Re: hashtables syntax Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-05-16 07:48 -0400
        Re: hashtables syntax Steven Simpson <ss@my.domain.invalid> - 2016-05-16 15:51 +0100
          Re: hashtables syntax Steven Simpson <ss@my.domain.invalid> - 2016-05-16 22:35 +0100
      Re: hashtables syntax Lew <lewbloch@gmail.com> - 2016-05-16 16:10 -0700
  Re: hashtables syntax Andreas Leitgeb <avl@logic.at> - 2016-05-15 13:43 +0000
  Re: hashtables syntax Roedy Green <see_website@mindprod.com.invalid> - 2016-05-20 18:00 -0700

csiph-web