Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.java > #13094
| Newsgroups | de.comp.lang.java |
|---|---|
| Date | 2017-01-31 08:26 -0800 |
| References | <da729f39-9df8-4d89-9689-c2c19949a437@googlegroups.com> <c689a210-367e-4c9c-97f8-6ec9e316ff9c@googlegroups.com> <o6pnoh$udl$1@newsreader4.netcologne.de> |
| Message-ID | <85660ce3-c2bc-4ba3-8e83-e2d9566b9cd2@googlegroups.com> (permalink) |
| Subject | Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch |
| From | Heiner Kücker <mail@heinerkuecker.de> |
Am Dienstag, 31. Januar 2017 11:09:22 UTC+1 schrieb Patrick Roemer:
> Responding to Heiner Kücker:
> > String und Integer als Typ-Argumente sind eigentlich disjoint.
> >
> > Demzufolge gehört die Methode m mit jeweiligem Typ nicht zur Typ-Vereinigungsmenge.
> >
> > Hier haben die Compiler-Bauer scheinabr ein Auge zugedrückt
> > und es wie Raw-Typen behandelt.
>
> Nicht ganz so schlimm, bzw. je nach Sichtweise noch schlimmer. ;) Da
> wird schon irgendwie der "speziellste gemeinsame Typ" inferiert, ganz
> wie von Dir gewünscht - aber dabei wird nonchalant so getan, als seien
> Generics, äh, sagen wir: punktuell covariant. Für Integer/String
> wäre das (vereinfacht) MyExceptionInterface<? extends Object>, für
> Integer/Long hingegen MyExceptionInterface<? extends Number>. Was
> natürlich auch wieder Murks ist.
>
> Wie auch immer, im Integer/Long-Fall ginge z.B. folgendes:
>
> MyExceptionInterface<? extends Number> nei = e;
> Number n = e.m();
>
> Keine Ahnung, ob sich das konsistent aus der JLS begründen lässt. Falls
> ja, liest sich das sicher lustig. :)
>
> Viele Grüße,
> Patrick
Ich habe es mit Long und Integer ausprobiert:
public class TryCatch
{
static interface MyExceptionInterface<T>
{
// gemeinsame Methode beider union-Exceptions
T m(T t);
}
static class MyException1
extends Exception
implements MyExceptionInterface<Long>
{
public Long m(
Long str )
{
return "";
}
}
static class MyException2
extends Exception
implements MyExceptionInterface<Integer>
{
public Integer m(
Integer i)
{
return 0;
}
}
void m()
throws MyException1 , MyException2
{
try
{
m();
}
catch ( MyException1 | MyException2 e )
{
// Aufruf gemeinsame Methode
System.err.println( e.m( null ) );
Number o = e.m( null );
// Parameter-Übergabe nicht kompilierbar, entspricht der punktuell-kovariant-Annnahme: Number o = e.m( Long.valueOf( 0 ) );
// Parameter-Übergabe nicht kompilierbar, entspricht der punktuell-kovariant-Annnahme: Number o = e.m( Integer.valueOf( 0 ) );
}
}
}
Genau wie von Dir angegenommen kann der Rückgabewert der Methode einem Number zugewiesen werden, aber Number ist nicht zuweisbar, also kovariant.
Keine Ahnung, wie Du darauf gekommen bist, schon ziemlich genial.
Danke
Back to de.comp.lang.java | Previous | Next — Previous in thread | Next in thread | Find similar
Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-30 16:51 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 00:48 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Patrick Roemer <sangamon@netcologne.de> - 2017-01-31 11:09 +0100
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Michael Paap <feunews@mpaap.de> - 2017-01-31 11:42 +0100
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 09:38 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Michael Paap <feunews@mpaap.de> - 2017-01-31 19:58 +0100
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 11:24 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Michael Paap <feunews@mpaap.de> - 2017-01-31 20:33 +0100
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 08:26 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 08:29 -0800
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Michael Paap <feunews@mpaap.de> - 2017-01-31 20:26 +0100
Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch Heiner Kücker <mail@heinerkuecker.de> - 2017-01-31 14:33 -0800
csiph-web