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


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

Re: method parameter binding

From Jan Burse <janburse@fastmail.fm>
Newsgroups comp.lang.java.programmer
Subject Re: method parameter binding
Date 2015-12-10 22:34 +0100
Organization albasani.net
Message-ID <n4cr4k$pqk$1@news.albasani.net> (permalink)
References <6bfa4a78-934e-4f90-8e5f-a2f56e529842@googlegroups.com>

Show all headers | View raw


Hi,

BTW: Situation changes totally when the argument types
are primitive types, since then the specificity rules are
different and widening applies, I guess.

See here:

Take this example program:

public class Test {

     double get( double x, double y ) {
         return x+y;
     }

     long get( long x, long y ) {
         return x+y;
     }

     Number get( Number x, Number y ) {
         throw new IllegalStateException("test");
     }

     public static void main(String[] args) {
         Test test = new Test();
         System.err.println("test.get(1L, 2L)="+test.get(1L, 2L));
         System.err.println("test.get(1.0, 2.0)="+test.get(1.0, 2.0));
         System.err.println("test.get(1, 2)="+test.get(1, 2));
     }

}

We get the following results:

test.get(1L, 2L)=3
test.get(1.0, 2.0)=3.0
test.get(1, 2)=3

So the two integers 1 and 2 are widened to long and
the long, long method is invoked.

Bye


Philipp Kraus schrieb:
> Hello,
>
> I have got a class with two methods like:
>
> Number get( Double x, Double y )
> {
>      return new Double(x.doubleValue() + y.doubleValue());
> }
>
> Number get( Long x, Long y )
> {
>      return new Long(x.longValue() + y.longValue());
> }
>
> Number get( Number x, Number y )
> {
>     throw new IllegalStateException("test");
> }
>
>
> If I run
>
> this.get( new Long/Double(3), new Long/Double(4) );
>
> it calls everytime the method with the exception definition. IMHO the compiler should bind the method to the exact parameter type and if the compiler cannot match the generic type bind should be used.
> In C++  I want expect this binding structure, so can I do an equal behaviour with Java?
>
> I have changed the Number to a generic type: <T extends Number> Number get( T x, T y )
> and get also the exception.
>
> Can you explain me, why the last/bottom method is used?
>
> Thanks
>
> Phil
>

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


Thread

method parameter binding Philipp Kraus <philipp.kraus.flashpixx@gmail.com> - 2015-12-10 07:44 -0800
  Re: method parameter binding Eric Douglas <e.d.programmer@gmail.com> - 2015-12-10 07:53 -0800
    Re: method parameter binding Jan Burse <janburse@fastmail.fm> - 2015-12-10 17:14 +0100
      Re: method parameter binding Eric Douglas <e.d.programmer@gmail.com> - 2015-12-10 08:20 -0800
        Re: method parameter binding Jan Burse <janburse@fastmail.fm> - 2015-12-10 17:23 +0100
          Re: method parameter binding Jan Burse <janburse@fastmail.fm> - 2015-12-10 17:23 +0100
      Re: method parameter binding Jan Burse <janburse@fastmail.fm> - 2015-12-10 17:21 +0100
        Re: method parameter binding Jan Burse <janburse@fastmail.fm> - 2015-12-10 17:27 +0100
          Re: method parameter binding Jan Burse <janburse@fastmail.fm> - 2015-12-10 17:28 +0100
            Re: method parameter binding Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-12-10 11:35 -0500
              Re: method parameter binding Martin Gregorie <martin@address-in-sig.invalid> - 2015-12-10 18:00 +0000
          Re: method parameter binding Eric Douglas <e.d.programmer@gmail.com> - 2015-12-10 08:41 -0800
            Re: method parameter binding j4n bur53 <janburse@fastmail.fm> - 2015-12-10 19:29 +0100
  Re: method parameter binding Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-12-10 11:33 -0500
  Re: method parameter binding Jan Burse <janburse@fastmail.fm> - 2015-12-10 22:34 +0100
    Re: method parameter binding Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-12-10 17:09 -0500
      Re: method parameter binding j4n bur53 <janburse@fastmail.fm> - 2015-12-11 09:27 +0100

csiph-web