Der informierte Downcast in Java [] (Der informierte Downcast in Java), Lektion, Seite 723814
https://www.purl.org/stefan_ram/pub/informierter_downcast_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Android-Entwicklung

Der informierte Downcast in Java 

Unter einer polymorphen Quelle  verstehen wir eine Methode, die Objekte verschiedener Klassen liefern kann.

Eine polymorphe Quelle

/**
* Returns the string {@code "abc"} if the argument value is
* {@code true} and {@code java.lang.System.out} otherwise.
*
* @param value a boolean value to determine the object
* returned.
* @return the string {@code "abc"} if the argument value is
* {@code true} and {@code java.lang.System.out} otherwise.
*/

java.lang.Object f( final boolean value )
{ return value ? "abc" : java.lang.System.out; }

Die Klasse eines Objekts »f(b)« ist zwar im allgemeinen unbekannt, jedoch kann man sagen, daß die Klasse des Objekts »f(true)« »java.lang.String« und die Klasse des Objekts »f(false)« »java.io.PrintStream« ist.

Um in solchen Fällen einen Ausdruck mit dem genauen Typ des Objekts zu erhalten, kann der Datentyp des Ausdrucks des Objekts in Klammern vor einem Ausdruck für das Objekt geschrieben werden.

Der folgende Ausdruck hat den Typ »java.lang.String«.

Ausdruck
( java.lang.String )f( true )

Der folgende Ausdruck hat den Typ »java.io.PrintStream«.

Ausdruck
( java.io.PrintStream )f( false )

Solch eine Festlegung des Typs eines Ausdrucks wird auch als ein Cast  bezeichnet.

Ein Cast eines Ausdrucks in einen echten Untertyp des Ausdrucks, der hinter den Klammern des Casts steht, wird auch als Downcast  bezeichnet.

Der Typ des Objekts muß dann allerdings auch tatsächlich ein Untertyp  des im Cast angegebenen Typs sein; andernfalls tritt eine Ausnahmesituation auf.

Ein Programmierer kann also einen Downcast schreiben, wenn er weiß, daß das Objekt einen Untertyp des im Cast angegebenen Typs hat. Der Compiler verfügt im allgemeinen nicht über diese Information, weswegen sie ihm vom Programmierer durch den Cast gegeben werden muß. Da der Programmierer hier also über den Typ des Objekts informiert ist und deswegen den Downcast schreiben kann, sprechen wir hier auch von einem informierten Downcast.

Main.java

public final class Main
{

static java.lang.Object f( final boolean value )
{ return value ? "abc" : java.lang.System.out; }

public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( ( java.lang.String )f( true ) );

java.lang.System.out.println
( ( java.io.PrintStream )f( false ) ); }}

Protokoll
abc
java.io.PrintStream@15db9742

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723814 stefan_ram:723814 Der informierte Downcast in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723814, slrprddef723814, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/informierter_downcast_java