Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.java > #13091
| Newsgroups | de.comp.lang.java |
|---|---|
| Date | 2017-01-31 00:48 -0800 |
| References | <da729f39-9df8-4d89-9689-c2c19949a437@googlegroups.com> |
| Message-ID | <c689a210-367e-4c9c-97f8-6ec9e316ff9c@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 01:51:42 UTC+1 schrieb Heiner Kücker:
> Hallo,
>
> ab Java7 kann man beim catch einen Union-Typ notieren:
>
> catch ( Exception1 | Exception2 e )
>
> Erlaubt sind nur Ableitungen von java.lang.Throwable.
>
> Man kann aber in den Exception-Klassen eigene Interfaces
> implementieren und der Java-Compiler findet diese,
> wodurch man Methoden aus diesen Interfaces aufrufen kann.
>
> Ich suche einen Algorithmus, der den speziellsten gemeinsamen Typ findet.
>
> Das Ergebnis kann ein Intersection-Typ sein, also eine Klasse oder Interface und beliebig viele weitere Interfaces.
>
> Man müsste sich an der super- und implements-Hierarchie der Exception-Klassen rekursiv hocharbeiten.
>
> Eine Idee wäre, die Schnittmenge aller erweiterten Klassen und Interfaces zu bilden.
>
> Dann hat man aber immer noch weniger spezielle Ober-Typen in der Schnittmenge.
>
> Ich bin dankbar für alle Ideen.
>
> Heiner
Ich denke, ich mache das mit der Schnittmenge.
Dann ermittle ich von allen Typen/Klasse der
Schnittmenge alle übergeordneten Klassen und
Interfaces.
Diese entferne ich, wodurch nur die finalen
Blätter des Baumes übrig bleiben.
Etwas schwierig wird es mit Typ-Argumenten.
So was ist leider auch möglich:
public class TryCatch
{
static interface MyExceptionInterface<T>
{
// gemeinsame Methode beider union-Exceptions
T m();
}
static class MyException1
extends Exception
implements MyExceptionInterface<String>
{
public String m()
{
return "";
}
}
static class MyException2
extends Exception
implements MyExceptionInterface<Integer>
{
public Integer m()
{
return 0;
}
}
void m()
throws MyException1 , MyException2
{
try
{
m();
}
catch ( final MyException1 | MyException2 e )
{
// Aufruf gemeinsame Methode
System.err.println( e.m() );
Object o = e.m();
}
}
}
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.
Gruesse
Heiner
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