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


Groups > de.comp.lang.java > #13091

Re: Algorithmus zum Finden des speziellsten Super-Typ eines multi-catch

X-Received by 10.157.8.36 with SMTP id 33mr7556631oty.148.1485852484288; Tue, 31 Jan 2017 00:48:04 -0800 (PST)
X-Received by 10.157.62.29 with SMTP id a29mr1715087otd.5.1485852484254; Tue, 31 Jan 2017 00:48:04 -0800 (PST)
Path csiph.com!weretis.net!feeder6.news.weretis.net!news.glorb.com!r185no1523297ita.0!news-out.google.com!78ni11313itm.0!nntp.google.com!r185no1523296ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups de.comp.lang.java
Date Tue, 31 Jan 2017 00:48:03 -0800 (PST)
In-Reply-To <da729f39-9df8-4d89-9689-c2c19949a437@googlegroups.com>
Complaints-To groups-abuse@google.com
Injection-Info glegroupsg2000goo.googlegroups.com; posting-host=77.185.227.148; posting-account=VmIUsgkAAABUMV5-gaSlvHjNMDcqojz2
NNTP-Posting-Host 77.185.227.148
References <da729f39-9df8-4d89-9689-c2c19949a437@googlegroups.com>
User-Agent G2/1.0
MIME-Version 1.0
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>
Injection-Date Tue, 31 Jan 2017 08:48:04 +0000
Content-Type text/plain; charset=UTF-8
Content-Transfer-Encoding quoted-printable
Xref csiph.com de.comp.lang.java:13091

Show key headers only | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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