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


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

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

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>

Show all headers | View raw


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 | 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