Eure Wunschliste für Java 7?

Status
Nicht offen für weitere Antworten.

foobar

Top Contributor
@byto Danke für den Beitrag. Das würde auf jedenfall erstmal den redundanten Code in meinen enums entfernen.

@ARadauer Ich finde Closures machen das Leben einfacher, weil man sich viel Tipparbeit spart. Wenn eine Closure kompatibel zu einer inneren Klasse ist, kann man immer noch selber entscheiden was man verwenden möchte. Oft benutzt man eine innere Klasse z.b. im ActionListener in Swing oder SelectionListener in Swt nur dazu eine Methode der Elternklasse aufzurufen. Das finde ich echt nervig, weil das den Code unnötig aufbläht. Es wäre doch viel schöner wenn man sowas:

Code:
myButton.addSelectionListener(new SelectionAdapter()
{
     public void widgetSelected(SelectionEvent e)
     {
         doSomething();
     }
});

durch sowas ersetzen kann:

Code:
myButton.addSelectionListener({ => doSomething(); });
 

byte

Top Contributor
foobar hat gesagt.:
@byto Danke für den Beitrag. Das würde auf jedenfall erstmal den redundanten Code in meinen enums entfernen.
NP, du musst nur darauf achten, dass die übergebene SearchableEnum-Klasse auch wirklich eine Enum ist, sonst liefert enumType.getEnumConstants() null. Habs auf die schnelle nicht hinbekommen, wie man Enum und SearchableEnum generisch vereint.
 
S

SlaterB

Gast
public static <T extends Enum<T> & SearchableEnum> T getByID(Class<T> enumType, int id) {


so wie es ja auch schon in der Enum-Klasse gibt:
Code:
    /**
     * Returns the enum constant of the specified enum type with the
     * specified name.  The name must match exactly an identifier used
     * to declare an enum constant in this type.  (Extraneous whitespace
     * characters are not permitted.) 
     *
     * @param enumType the <tt>Class</tt> object of the enum type from which
     *      to return a constant
     * @param name the name of the constant to return
     * @return the enum constant of the specified enum type with the
     *      specified name
     * @throws IllegalArgumentException if the specified enum type has
     *         no constant with the specified name, or the specified
     *         class object does not represent an enum type
     * @throws NullPointerException if <tt>enumType</tt> or <tt>name</tt>
     *         is null
     * @since 1.5
     */
    public static <T extends Enum<T>> T valueOf(Class<T> enumType,
                                                String name) {
        T result = enumType.enumConstantDirectory().get(name);
        if (result != null)
            return result;
        if (name == null)
            throw new NullPointerException("Name is null");
        throw new IllegalArgumentException(
            "No enum const " + enumType +"." + name);
    }
 

Janus

Bekanntes Mitglied
closures sind meiner ansicht nach in java überflüssig. jede objektorientierte sprache kann sich da wunderbar mit anderen konstrukten behelfen. von mir aus können ein paar neue basisklassen in die standard lib übernommen werden, die einen bei sowas unterstützten, aber ich halte wirklich wenig davon, java features zu spendieren, die bereits umsetzbar sind.

ok, "echte" enums waren tatsächlich mal überfällig, aber java soll kein sprachmonster werden.

ich hab mir z.b. an manchen stellen tatsächlich mehrfachvererbung gewünscht, weil es einige probleme wunderbar schnell und einfach gelöst hätte. aber da java sowas nicht unterstützt, musste ich mir was anderes ausdenken und das hat in jedem fall zu übersichtlicherem code geführt. dass java "so wenig" kann, ist ein segen.
 

tfa

Top Contributor
Janus hat gesagt.:
closures sind meiner ansicht nach in java überflüssig.
Klar sind Closures überflüssig. Genauso überflüssig wie Generics, Enhanced For-Loops, Enums und das Concurrency-Framework. Software kann man auch ohne all dies schreiben, aber es könnte einem das Leben leichter machen, wenn die Programme dadurch lesbarer, übersichtlicher und wartbarer werden. Hoffentlich trifft das dann auchmal für Closures zu, wenn diese nicht zu kompliziert umgesetzt werden. Die Gefahr besteht allerdings, da geb ich dir recht.

jede objektorientierte sprache kann sich da wunderbar mit anderen konstrukten behelfen. von mir aus können ein paar neue basisklassen in die standard lib übernommen werden, die einen bei sowas unterstützten, aber ich halte wirklich wenig davon, java features zu spendieren, die bereits umsetzbar sind.

Welche Konstrukte sollen das sein? Bei Java fallen mir nur Interfaces und anonyme innere Klassen ein. Die sind aber sehr schwerfällig und kein vollwertiger Ersatz.
 

Janus

Bekanntes Mitglied
Code:
Action createAction( Object someVar );
Result doSomethingUseful( Environment e, Action action );
bildet closures so ziemlich ab. für das, was die meisten mit closures anfangen wollen, bietet das command pattern die nötige funktionalität. braucht man mehr, kann man das ganze noch mit diversen factories kombinieren.

wenn die einhellige meinung ist, dass mit dem einzug von closures auch lamba ausdrücke unterstützt werden müssen: das sind zwei unterschiedliche konzepte. denn lambda ausdrücke kann man in java wirklich nur schwerlich umsetzen. bleibt allerdings die frage, ob man die wirklich braucht.
 

tfa

Top Contributor
Janus hat gesagt.:
[...]bildet closures so ziemlich ab.
Bestimmt nicht.
Janus hat gesagt.:
für das, was die meisten mit closures anfangen wollen, bietet das command pattern die nötige funktionalität.
Wenn du damit nicht mehr anfangen willst, brauchst du wirklich keine Closures. Ein Closure ist ein "Funktionsabschluss" mit Zugriff auf freie Variablen in dem er definiert bzw. verwendet wird. Und das geht eben mit Java nicht.
In anderen Sprachen (funktionalen und multiparadigmen-Sprachen) habe ich Closures schätzen gelernt. Ob sie was in Java bringen, kann man schlecht voraussagen -- sicherlich wären sie sinnvoller als Mehrfachvererbung. Bis man sie wirklich produktiv einsetzen kann, werden eh noch etliche Jahre vergehen.
 

Janus

Bekanntes Mitglied
total tolle closures
Code:
public class Closure
{
	private Runnable inc;
	private Runnable pc;
	
	public Closure()
	{
		final int[] counter = { 0 };
		this.inc = new Runnable()
		{
			public void run()
			{
				counter[ 0 ] += 1;
			}
		};
		this.pc = new Runnable()
		{
			public void run()
			{
				System.out.println( counter[ 0 ] );
			}
		};
	}
	
	public static void main(String[] args)
	{
		Closure c = new Closure();
		c.inc.run();
		c.inc.run();
		c.pc.run();
		c.inc.run();
		c.pc.run();
	}
}

natürlich erlaubt java keine lambda ausdrücke oder funktionspointer. wenn man das auch noch als bestandteil von closures sieht, dann hat man halt pech gehabt :p
 
J

Janus_

Gast
liefer mir mal ein beispiel, was du mit closures so tolles anstellst, ohne dabei irgendwelche anderen sprachmittel auszunutzen. ein reines closure sozusagen.
 

foobar

Top Contributor
Hab doch schon ein Beispiel geliefert. Überall dort wo man jetzt innere Klassen mit wenig Code in der invoke Methode verwendet. Was meinst du mit reiner Closure? Man kann sehr gut ohne Closure auskommen, aber mit Closures kann man sich viel Tipparbeit sparen und genau da sehe ich den Vorteil.
 
S

SlaterB

Gast
meinst du
> myButton.addSelectionListener({ => doSomething(); });
?

dass sowas jemals geht ist ja sehr schwer vorzustellen,
was wäre denn da die Regel?:
"wenn eine Operation einen Interface-Parameter verlangt und dieses Interface aus genau einer Operation besteht,
dann ignoriere dessen Parameter (z.B. SelectionEvent, oder soll man darauf immer noch zugreifen können?)
und erlaube { => Code }
wobei 'Code' dann in eine neu angelegte anonyme innere Klasse des fraglichen Codes kopiert wird"


ist das eine realistische Programmiersprache?
gut, die Frage kann man sich zu anonymen inneren Klassen an sich genauso stellen, aber da gibts noch ein wenig System, finde ich,

zumal du in deinem Beispiel sogar vom Ersatz eines Adapters sprichst,
was impliziert, dass das eigentliche Interface mehrere Operationen hat,
welche davon soll dann gefüllt werden oder alle?



ich hab gerade bisschen versucht, nach Closures im Internet zu suchen
und nicht wirklich alles überblickt, aber diese merkwürdige Abkürzung ganz gewiss nicht gefunden,
eher was zu Variablen, deren Wert sich gemerkt wird
 

schalentier

Gesperrter Benutzer
Guggst du hier:

http://groovy.codehaus.org/Closures

Da sind ne Menge Beispiele. Durch Closures (in Groovy) ergeben sich noch eine Reihe weiterer interessanter Konzepte:

http://groovy.codehaus.org/Builders


Ob das allerdings was in Java zu suchen hat, da bin ich mir nicht sicher. Java sollte so einfach wie moeglich bleiben, deswegen wuensch ich mir fuer die naechste Version das Abschaffen von Generics :-D

Wer mehr Sprachfeatures braucht, kann auch Groovy nehmen, da gibts das alles schon...
 
S

SlaterB

Gast
also eine reine Definition eines Code-Blocks ohne typisierte Parameter oder Interfaces

und der Button könnten dann zusätzlich zum normalen addSelectionListener(SelectionListener);
noch das unspezifizierte addSelectionListener(AnyClosure); anbieten

hmm, damit könnte ich leben, ist erlaubt ;)
 

schalentier

Gesperrter Benutzer
Listener sind nur ein winziger Bruchteil dessen, was mit Closures machbar ist. Viel interessanter ist mMn, dass man damit endlich Quellcode von doppelten Code wie er in Schleifen vorkommt befreien kann.

Anstatt:
Code:
for( int i=0; i<10; i++ ) { // do it }

Koennte man das so schreiben:
Code:
(0..9).each( {// do it } )

Aber wie gesagt, hat in Java irgendwie nix zu suchen, finde ich. Klar kann man jetzt coole Sachen von Groovy auch in Java einbauen, aber dann hat man am Ende ein halbes Groovy... wozu?
 

Saxony

Top Contributor
Aha,

und wie komme ich an den aktuellen Index in so einem Fall?

Wie bei Perl vielleicht?

Code:
(0..9).each( { sysout($_) } )

Bei der Variante:

Code:
10.times { /* whatever */ }

wie ist da der aktuelle Index? Geht das von 0-9, oder 10-19 oder wie? Oder soll das nur etwas 10 mal ausführen ohne einen Index zu erzeugen?

bye Saxony
 

Illuvatar

Top Contributor
@Saxony:
In Groovy entweder mit Deklaration
Code:
10.times { index ->
   println (index)
}
oder ansonsten über die automatisch erstellte Variable "it"
Code:
10.times {
   println (it)
}
Hier geht der Index von 0 bis 9, bei der Variante mit der Range kann man das natürlich selbst festlegen
Code:
(23..42).each {
   println (it)
}

In Java würde das allerdings alles nochmal anders aussehen. Methoden auf ints anwenden und so ist ja nicht ;)
Bin auch nicht ganz sicher ob Java das braucht. Es ist sehr komfortabel, aber nochmal eine Menge Syntax. Und es gibt sicher einige Fälle die dann nicht ganz intuitiv sind, bei Vermischung von inneren Klassen und Closures und so (was bedeutet this? wie greife ich auf welches Objekt zu?) - mir fällt grad kein richtig konkretes Beispiel ein, hab mich noch nicht genauer damit beschäftigt, könnte es mir aber gut vorstellen dass es solche Probleme gibt.
 

foobar

Top Contributor
Wir sollten noch nen 2ten Thread erstellen mit dem Titel "Java 8 Wunschliste". Ich mache mal den Anfang:
- Lamda-Kalkül
- Ranges
- Defaultvariablen wie $_ @_ $! etc.

Spätestens mit Java 9 werden dann die Scriptsprachen der VM wie Groovy oder JRuby obsolet, weil Java von Haus aus schon wesentlich mehr leistet ;-)
 

Saxony

Top Contributor
foobar hat gesagt.:
Spätestens mit Java 9 werden dann die Scriptsprachen der VM wie Groovy oder JRuby obsolet, weil Java von Haus aus schon wesentlich mehr leistet ;-)

In Java 10 will ich nur noch meine Anwendungsfälle als Fließtext eintippen müssen!

Nach dem Motto:

Mach ein Programm mit Oberfläche, womit ich einfach meine Laufwerke und Dateien anzeigen lassen kann!

compile drücken - und schwupps purzelt nen FileBrowser hinten raus. :)

Der Compiler liest es dann so:

"Mach ein Programm" -> lege eine Klasse mit main() an
"mit Oberfläche" -> verwende grafische Koponenten zur Anzeige auf dem Bildschirm
"womit ich einfach" -> keine verschachtelten Menüs, Verwendung von ToolBar - halt einfach nutzerfreundlich
"meine" -> bleibe auf localhost, gib aber die Möglichkeit zur Anzeige eingebundener (meine) Netzlaufwerke
"Laufwerke" -> scannen, lesen und anzeige der HDDs und Partitionen
"und Dateien" -> auslesen, anzeige der Dateien auf den HDDs und Partionen
"anzeigen lassen kann" -> nicht als always-on-top, full-screen, ohne close button in den Auto-Start :D
"!" -> und zwar JETZT!

bye Saxony
 

Titanpharao

Bekanntes Mitglied
Ich würde mit mehr Funktionen zu Threads wünschen. Beispiel .destroy() oder .close() (hieß das so?) Also um einen Thread einfach zu beenden. Aber halt sicher ;)
 

didjitalist

Bekanntes Mitglied
Titanpharao hat gesagt.:
Ich würde mit mehr Funktionen zu Threads wünschen. Beispiel .destroy() oder .close() (hieß das so?) Also um einen Thread einfach zu beenden. Aber halt sicher ;)

Atomare Blöcke :toll: Ich fänds exzellent, wenn man in Java atomare Blöcke definieren könnte, die garantiert immer abgeschlossen werden, solange die VM noch rennt.
 

Ark

Top Contributor
(Vorangegangene Beiträge habe ich nur überflogen.)

Ich bin generell Sprachfeatures abgeneigt, die hohe Komplexitäten hinter leicht aussehenden Schreibweisen "verbergen". Schon das Autoboxing halte ich für eine nicht so tolle Idee, weil hier z.B. verschleiert wird, dass in Wirklichkeit mit Objekten und eben nicht mit relativ "leichten" primitiven Datentypen hantiert wird. Auch mit der foreach-Schleife konnte ich mich (bisher) nicht wirklich anfreunden. Von Operatorüberladung halte ich entsprechend wenig, weil auch hier eine komplexe Operation wie die Multiplikation zweier BigDecimals im Code als eine scheinbar leichte Operation dargestellt werden könnte.

Dass die Stringverkettung eine Operatorüberladung erfahren hat, kann ich insofern billigen, als dass auch Stringliterale die Sprache schmücken und beides zusammen vermutlich hauptsächlich zum Erzeugen von konstanten (Exception-)Nachrichten oder Debug-Informationen genutzt wird. (Ansonsten sollte man ja StringBuilder oder StringBuffer benutzen.)

Switch-Case über Strings lehne ich auch ab, da ganz andere Prinzipien (im Gegensatz zu primitiven Datentypen) zum Tragen kämen.

Nun zu meiner positiven Wunschliste:

- Collections-Framework auch für primitive Datentypen (z.B. IntHashSet)
- Angabe eines Typs für null, wenn sonst Mehrdeutigkeiten auftreten könnten, Beispiel:
Code:
JDialog blubb = new JDialog((Window)null, "Auch ohne Dummy eindeutig!");
- Bereichsangaben für Switches:
Code:
case 'a'..'m', 'o'..'z': System.out.println("Ähnelt einem in-Operator");
- mehrere Sichtbarkeitsmodifizierer für Eigenschaften, um mehr Leserechte einzuräumen (dies würde langatmige Methodenaufrufe und langweilige Getter im Quelltext vermeiden):
Code:
public private int kannÖffentlichGelesenWerden;
- Zwei neue Klassen java.math.Complex und java.math.Rational, um eben mit solchen Zahlen umgehen zu können.
- Vier neue Methoden in der Klasse Math:
Code:
public long pow(long a, long b)
public long factorial(int n)
public long gcd(long a, long b)
public long lcm(long a, long b)
- Swing sollte an vielen Stellen (z.B. JLabel) CharSequences anstatt nur String akzeptieren können, denn ich sehe nicht ein, warum ich vielleicht nur für eine kleine Anzeige jedes Mal einen neuen String erzeugen soll, sobald sich ein Wert (z.B. eine Cursorposition, die angezeigt wird) ändert.

So viel bis jetzt von meiner Seite.

Ark
 
G

Guest

Gast
- ein integrierter Generator für einen VM-Launcher. (für alle unterstützten Plattformen)
- Etwas ähnliches wie das with-Statement in C#
Code:
with(Connection con = getConnection())
{
   ...
}
// an dieser Stelle ist alles freigegeben
- weniger Checked-Exceptions in der API.
- Abstraktion der GUI-API. Sowas wie XAML.
 

didjitalist

Bekanntes Mitglied
Die with-Syntax kenne ich aus VB und ich hab sie dort schon nicht gemocht ;)

Häufig wird Code einfach deshalb unübersichtlich, weil die minimal qualifizierenden Bezeichner gewählt werden. Dann am Besten noch ein paar static imports einstreuen und schon muss man in jeder zweiten Zeile nachgucken, wo jetzt schon wieder eine Konstante oder Methode herkommt.

Ich bin sehr dafür, Java um Dinge zu erweitern, die Standardlösungen fördern und Code sicherer machen können. Aber gerade solch Kontextgefrickel wie 'with/using' oder - noch schlimmer - Templates soll bitte draussen belieben.
 
G

Gast

Gast
Die Startzeit der Java Applets auf die von Flash zu drücken.
Grund: Java ist 100 mal mächtiger als Flash. Nur kann man Java momentan nicht auf diesem Gebiet einsetzen, zumindest nicht wenn man sich nicht den letzten Besucher vergraulen will.
 

ps

Bekanntes Mitglied
an dieser Stelle setzt doch Java 6 Update 10 an - ich denke damit wird die Startgeschwindigkeit von JavaFX erheblich gedrückt.. dazu eine schöne IDE.. das wär was :)

Auf meiner Wunschliste von der Sprache Java an sich steht zB. Arrays direkt als Parameter übergeben zu können, zB:
Object o = methode({"eins","zwei","drei"}, parameter2);

oder geht das schon irgendwie? ^^
 

tfa

Top Contributor
ps hat gesagt.:
Auf meiner Wunschliste von der Sprache Java an sich steht zB. Arrays direkt als Parameter übergeben zu können, zB:
Object o = methode({"eins","zwei","drei"}, parameter2);

oder geht das schon irgendwie?

Code:
Object o = methode(new String[]{"eins","zwei","drei"}, parameter2);
:?:
 

didjitalist

Bekanntes Mitglied
Die Kombination von varargs und Collections find ich ganz nett dafür.
Code:
void foo( List<?> arg0, List<?> arg1 )
{
  // ...
}

// ...
foo( Arrays.asList( "Foo", "Bar", "Baz" ), Arrays.asList( 23, 42 ) );
 
S

SlaterB

Gast
Ark hat gesagt.:
- Angabe eines Typs für null, wenn sonst Mehrdeutigkeiten auftreten könnten, Beispiel:
Code:
JDialog blubb = new JDialog((Window)null, "Auch ohne Dummy eindeutig!");
gibts genau in dieser Form schon
 

DEvent

Bekanntes Mitglied
Anonymous hat gesagt.:
- Etwas ähnliches wie das with-Statement in C#
Code:
with(Connection con = getConnection())
{
   ...
}
// an dieser Stelle ist alles freigegeben

Was spricht gegen
Code:
function()
{
    {
        Connection con = getConnection();
        // ...
    }
    // hier ist con nicht mehr gueltig, kann vom GC einkassiert werden
}

Ark hat gesagt.:
- Collections-Framework auch für primitive Datentypen (z.B. IntHashSet)
Gibts doch schon: http://pcj.sourceforge.net/



Ich haette gerne fuer Java 7 die Abschaffung der checked-Exceptions.
 

tfa

Top Contributor
DEvent hat gesagt.:
Was spricht gegen
Code:
function()
{
    {
        Connection con = getConnection();
        // ...
    }
    // hier ist con nicht mehr gueltig, kann vom GC einkassiert werden
}
con kann zwar einkassiert werden, aber niemand weiß wann. Es gibt
keine Destruktoren in Java. In einem C#-with-Block würden die Ressourcen
nach verlassen wieder freigegeben werden (die Klasse muss IDisposable implementieren).
Momentan kann man sich in Java nur so behelfen:

Code:
Connection con=null;
try {
   con = getConnection();
}
finally {
   if (con!=null) con.dispose(); 
}
 

byte

Top Contributor
DEvent hat gesagt.:
Was spricht gegen
Code:
function()
{
    {
        Connection con = getConnection();
        // ...
    }
    // hier ist con nicht mehr gueltig, kann vom GC einkassiert werden
}
Dagegen spricht, dass der GC zwar Objekte aus dem Heap entfernen kann, aber nicht selbsständig Resourcen freigibt. Eine JDBC Connection muss explizit mit close() geschlossen werden. Ähnliches trifft auf Streams, Reader oder Writer zu.
 

DEvent

Bekanntes Mitglied
Ok habe ich wohl uebersehen :)

Mir faellt da grade noch was ein:

Eine bessere try-catch-finally Syntax. Sie sollte kuerzer sein und nicht so viele () oder {} beinhalten.
Eine Verknuepfung der catches waehre nicht schlecht:

Code:
try 
{
    // ...
}
catch (IOException, SQLException e)
{
    e.printStack();
}
 

tfa

Top Contributor
Es gibt einen Vorschlag von Josh Bloch, "do" dafür zu verwenden. "try" ist ihm aber auch eine Überlegung wert, da man dann solche Blöcke auch einfach mit catch kombinieren könnte.
 

byte

Top Contributor
DEvent hat gesagt.:
Eine Verknuepfung der catches waehre nicht schlecht:

Code:
try 
{
    // ...
}
catch (IOException, SQLException e)
{
    e.printStack();
}
Wie soll das denn funktionieren in einer statisch getypten Sprache? ???:L

Du kannst aber den gleichen Effekt schon heute erreichen, indem Du den Supertyp fängst.
 

tfa

Top Contributor
Warum sollte das nicht gehen? Die Exceptions müssen ja nichts miteinander zu tun haben, dann wäre der Supertyp java.lang.Exception und man fängt alle möglichen Exceptions.
 
G

Gelöschtes Mitglied 5909

Gast
byto hat gesagt.:
DEvent hat gesagt.:
Eine Verknuepfung der catches waehre nicht schlecht:

Code:
try 
{
    // ...
}
catch (IOException, SQLException e)
{
    e.printStack();
}
Wie soll das denn funktionieren in einer statisch getypten Sprache? ???:L

Du kannst aber den gleichen Effekt schon heute erreichen, indem Du den Supertyp fängst.

und was is mit runtimeexceptions? die zu catchen mit catch Exception is oft nicht so gut ;)

byto hat gesagt.:
Im Catch-Block wäre der genaue Typ von e nicht spezifiziert.

wie wärs denn mit sowas?

catch (IOException ioe, SQLException sqle)
 

DEvent

Bekanntes Mitglied
tfa hat gesagt.:
Der Typ von e wäre dann von einer gemeinsamen Oberklasse. Die Hauptsache ist, dass nur die konkret angegebenen Exceptions gefangen werden.
Es gibt jedenfalls Vorschläge für ein "improved catch":

http://www.briangoetz.com/blog/?p=43

Genau das Problem in dem Blog habe ich auch jeden Tag. Wenn man z.B. mit Reflection arbeitet, dann kann schnell passieren das man 5 oder mehr Exceptions fangen muss.

try { irgend ein 2-Zeiler }
catch ...
{
}
catch ...
{
}
catch ...
{
}
catch ...
{
}
catch ...
{
}
catch ...
{
}
usw.

Meistens erspare ich mir die Arbeit und catche einfach Exception.

Mich nerven checked-exceptions aber auch langsam. Wenn eine Exception fliegt und man sie nicht richtig faengt, dann sollte das Programm sich einfach beenden. Mit checked-Exception aber sehe ich oft:
Code:
try{ /* irgendwas */ }
catch { IOException e }
{
    e.printStack();
}
So mehr nicht. Dann gibt es auf der Console eine Fehlermeldung, aber das Programm laeuft munter weiter, weil der Programmierer zu faul war eine richtige Exception-Behandlung zu schreiben. Wenn es keine checked Exceptions gaebe, dann wuerde der faule Programmierer IOException ueberhaupt nicht fangen und das Programm wuerde sich beenden.

Zum anderen ist das Konzept nicht sauber in Java. Was ist wenn ich einen Iterator habe, dessen next() Methode irgendwas aufrufen muss, dass eine checked-Exception wirft?
Code:
FooIterator implements Iterator<Foo>
{
    public Foo next()
    {
        try { /* irgendwas */ }
        catch ( SQLException e )
        {
            // was mache ich nun damit?
            // am sinnvollsten waehre throw new RunntimeException(e);
        }
    }
}
Nun muss ich die SQLException in eine unchecked-Exception verpaken. Wozu dann aber checked-Exception ueberhaupt?
 
S

SlaterB

Gast
> Nun muss ich die SQLException in eine unchecked-Exception verpaken. Wozu dann aber checked-Exception ueberhaupt?

aha

weil etwas in einer bestimmten Situation nicht geht, soll es abgeschafft werden?

mit einem Iterator kann man kein int von einer int-Sammlungs-Klasse zurückgeben
-> int abschaffen?


dieses Argument passt nicht, andere natürlich schon
 

tfa

Top Contributor
DEvent hat gesagt.:
Wozu dann aber checked-Exception ueberhaupt?
Es war halt ein Experiment, ein neues Konzept, das nicht besonders gut funktioniert hat. Jetzt werden wir es nicht mehr los. Hinterher ist man immer schlauer.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Primzahl || Primfaktorzerlegung -> Eure Laufzeiten *Wen es halt interessiert* Allgemeine Java-Themen 10
R Welche waren eure ersten Projekte? Allgemeine Java-Themen 10
J Eure Meinung: Threads verwenden, oder nicht? Allgemeine Java-Themen 6
E Eure erstellten Programme Allgemeine Java-Themen 3
André Uhres Welches Werzkeug benutzt ihr um eure Mails zu lesen? Allgemeine Java-Themen 47
F (Wie) sortiert ihr eure Felder, Methoden, etc? Allgemeine Java-Themen 19
J Eure Meinung - Das JMF (Java Media Framework) Allgemeine Java-Themen 3
K Design: Klassen in Pakete aufteilen - Eure Meinung Allgemeine Java-Themen 8
L Softwarepatente - Eure Meinung Allgemeine Java-Themen 4
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
kodela Eingabe für TextArray bedingt sperren Allgemeine Java-Themen 3
Karl_Der_Nette_Anfänger Hat wer ne Lösung für verknüpfte Postleitzahlen? (Baum/Wurzel Struktur) Allgemeine Java-Themen 11
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
G KeyListener für JTextField Allgemeine Java-Themen 5
webracer999 Library für Textsuche (z. B. include/exclude, and/or)? Allgemeine Java-Themen 5
I Module-Info für Jar erzeugen Allgemeine Java-Themen 7
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
B Simpler Eventlistener für Tastaturtaste bauen? Allgemeine Java-Themen 13
_user_q Eingegebenen Text Zeile für Zeile ausgeben lassen Allgemeine Java-Themen 11
E Key für TOTP Algorythmus(Google Authentificator) Allgemeine Java-Themen 0
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
M pfx-Zertifikat in Tomcat für SSL-Verschlüsselung nutzen Allgemeine Java-Themen 14
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
rosima26 Bester Sortieralgorithmus für kurze Arrays Allgemeine Java-Themen 40
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
MangoTango Operatoren while-Schleife für Potenz Allgemeine Java-Themen 3
B Lottospiel, genug Reihen tippen für 3 Richtige (Spaß mit Arrays)? Allgemeine Java-Themen 46
B Mit welchen Datentypen und Strukturierung am Besten dutzende Baccaratspiele Shcritt für Schritt durchsimulieren? Allgemeine Java-Themen 26
D Klassendesign für einen Pascal Interpreter Allgemeine Java-Themen 6
I OCR Library für Belegerkennung Allgemeine Java-Themen 7
farah GetterMathod für Farbkanäle Allgemeine Java-Themen 6
B Welcher Datentyp für sehr große Zahlenbereiche? Allgemeine Java-Themen 1
S Webservices für binäre Daten? Allgemeine Java-Themen 5
G Licence-Header für InHouse entwickelten Source Allgemeine Java-Themen 8
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
O git ignore für Intellji braucht es die .idea Dateien? Allgemeine Java-Themen 8
F Java Script für das Vorhaben das richtige? Allgemeine Java-Themen 9
M wiviel Java muss ich für die Berufswelt können ? Allgemeine Java-Themen 5
Robertop Datumsformat für GB ab Java 16 Allgemeine Java-Themen 1
Thallius Verschiedene entities für gleichen Code…. Allgemeine Java-Themen 8
OnDemand Zentrale "Drehscheibe" für verschiedene APIs Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
D SHA-3 für Java-version 1.8 Allgemeine Java-Themen 1
N Validator für einen SQL-Befehl Allgemeine Java-Themen 22
Muatasem Hammud Erstellung von Testdaten für Arrays Allgemeine Java-Themen 6
B Logikfehlersuche, das perfekte Lottosystem für 3 Richtige mit Arraylists? Allgemeine Java-Themen 61
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
M API für PLZ Umkreissuche Allgemeine Java-Themen 3
1Spinne JDK 8 für Eclipse installieren Allgemeine Java-Themen 5
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
L Methoden Parser für gängige Datumsformate? Allgemeine Java-Themen 1
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
N relativier Pfad für sqlite-Datenbank in Gradle/IntelliJ Allgemeine Java-Themen 2
buchfrau Anagram für beliebiges Wort Allgemeine Java-Themen 2
TonioTec Api für Datenaustausch zwischen Client und Server Allgemeine Java-Themen 0
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
Kirby.exe Distanz Map für die Distanztransformation erstellen Allgemeine Java-Themen 1
F PI Regler für Heizung Allgemeine Java-Themen 7
8u3631984 Generelle Log4j.xml für alle Module Allgemeine Java-Themen 5
M Wie übergebe ich den Zähler für die Anzahl Rekursionsschritte korrekt? Allgemeine Java-Themen 2
B Login für User, der im Hintergrund Schedules ausführt Allgemeine Java-Themen 16
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
S Java-Task-Management-Tool für Windows und Mac selber programmieren Allgemeine Java-Themen 4
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
Z Welches GUI Framework für Java ist aktuell? Allgemeine Java-Themen 16
N Convert.FromBase64 von C# für Java Allgemeine Java-Themen 11
N fixed-keyword von C# für Java Allgemeine Java-Themen 6
O Suche Scripter für alt:V Project! Allgemeine Java-Themen 0
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
O Suche Unterstützung für ein OpenSource-Projekt (grafischer Editor) Allgemeine Java-Themen 13
Kirby.exe Software für Graphische Visualisierung Allgemeine Java-Themen 20
B OOP Auslöser für NullPointerException Allgemeine Java-Themen 3
L Generator für einen Parser implementieren Allgemeine Java-Themen 13
DonMalte Ambitioniertes Projekt für Einsteiger & Motivierte Allgemeine Java-Themen 0
Kirby.exe Movement System für Spiel Allgemeine Java-Themen 13
Kirby.exe Framework für Game Design Allgemeine Java-Themen 8
W Alternative für Threads Allgemeine Java-Themen 6
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
Elyt Compiler-Fehler Datei kann nicht erstellt werden. Die Syntax für den Dateinamen etc. ist falsch. Allgemeine Java-Themen 2
Thallius Rätsel für Windows Profis Allgemeine Java-Themen 8
D OOP Gemeinsamen ID-Raum für zwei Klassen implementieren Allgemeine Java-Themen 7
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
Thallius Alternative für SwingWorker Allgemeine Java-Themen 5
I Lohnt sich heutzutage der Aufwand einer Portierung für MacOS Allgemeine Java-Themen 8
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Datenstruktur für eine Map erstellen Allgemeine Java-Themen 2
H OOP Setting(config) für Applikation sicheren? Allgemeine Java-Themen 9
OnDemand PDF Libary für Formulare Allgemeine Java-Themen 7
S Warmup für Lineare-Suche mit Zeitmessung Allgemeine Java-Themen 2
T Allgemeine Frage: GUI für 3D-Visualisierung Allgemeine Java-Themen 5
M Brainstorming für mein Projekt Allgemeine Java-Themen 30
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
F Was ist der Dateityp meines Parameters für die Main Methode. Allgemeine Java-Themen 6
C Bibliotheken für Algorithmische Geometrie Allgemeine Java-Themen 2
C Daten für Klassifikationsverfahren gewinnen Allgemeine Java-Themen 6
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben