Komische Zeichen in Java

Bitte aktiviere JavaScript!
Hallo,

mich verwirren ziemlich die <>-Zeichen in Java. Ich weiss, dass ich darin z.B. String, int setzen kann aber ich verstehe nicht genau wo und warum ich sie setzen soll. Bei einer Variable kann ich auch einfach String bar; setzen. Wo ist da der Unterschied? Manchmal kann man sie auch setzen und sie einfach leer lassen. Kann mir das bitte jemand erklären?

Auch einige Klammern () irritieren mich etwas.

Hier ein Beispiel:

So sah mein Code aus:

Java:
Map<String, String> map = new HashMap<>();
map.put("string", "password");
Database.getData("SELECT * FROM users", map);
Das funktionierte so bestens aber ich wollte lieber alles in einer Linie haben und habe es so probiert:
Java:
Database.getData("SELECT * FROM users", new HashMap<>().put("string", "username"));
Das hat so nicht funktioniert und ich erhielt diese Fehlermeldung:
Wrong 2nd argument type. Found: 'java.lang.Object', required: 'java.util.Map'
Ich habe es dann so probiert und erhielt dann keine Fehlermeldung mehr:
Java:
Database.getData("SELECT * FROM users", (Map) new HashMap<>().put("string", "username"));
Alles in allem, 2 Fragen:
Was hat <> zu bedeuten?
Was hat (Map) zu bedeuten?

PS: So oder so, der Code hat nicht funktioniert, weil der zweite Parameter immer null ist.
 
A

Anzeige




Vielleicht hilft dir unser Kurs hier weiter —> (hier klicken)
mich verwirren ziemlich die <>-Zeichen in Java. Ich weiss, dass ich darin z.B. String, int setzen kann aber ich verstehe nicht genau wo und warum ich sie setzen soll. Bei einer Variable kann ich auch einfach String bar; setzen. Wo ist da der Unterschied?
Das was dich da verwirrt nennt sich "Generics" und dienen - einfach gesagt - dazu, dass man sich bei (bspw) beim schreiben einer Klasse nicht auf einen bestimmten Datentyp festlegen muss. Nimm dir bspw. die Klasse ArrayList. Du willst ja selber bestimmen von welchem Datentyp die Elemente in der Liste sind sonst müsste man ja für jeden Datentyp eine eigene Liste implementieren und das ist nun wirklich nicht Sinn der Sache ;)
Das funktionierte so bestens aber ich wollte lieber alles in einer Linie haben
Warum? Das in eine Zeile zu klatschen fördert mEn nicht wirklich die Lesbarkeit.
Das hat so nicht funktioniert und ich erhielt diese Fehlermeldung:
Es ist logisch, dass das nicht funktionieren kann. Die Methode put() gibt dir den vorherigen Value des Keys oder null zurück. Deine Methode erwartet aber eine Map.
Ich habe es dann so probiert und erhielt dann keine Fehlermeldung mehr:
Das macht es nicht wirklich besser. Immer wenn du so ein Konstrukt (Datentyp) wert siehst, dann möchtest du wert zu dem Datentyp "casten"

Vielleicht hier ein paar weiterführende Links:
Java Typumwandlung (Cast)
Java Generics
 
In einer Zeile ginge das so, ist aber kein wirklich guter Stil, da wie von @Robat angedeutet wurde nicht lesbar :
Java:
import java.util.HashMap;
import java.util.Map;
/**
 */
public class Test {
    public static void main(String[] args) {
        System.out.println(new Test().getData(new HashMap<>(){{put("string", "password");}}));
    }
    Map<String, String> getData(HashMap<String, String> map) {
        return map;
    }
}
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben