Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #33344
| 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> |
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
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