Geneeristen tyyppien perusteet (T, päättely)
Oppikaa geneeriset tyyppiparametrit T , ymmärtäkää, miksi ne lisäävät käännösaikaista turvallisuutta, ja nähkää, miten diamond-operaattori päättelee tyypit.
Geneeristen tyyppien perusteet (T, päättely) on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 3 oppituntia.
Miksi geneerisiä tyyppejä käytetään?
Geneeriset tyypit lisäävät tyypit säiliöihin ja apuohjelmiin, jotta kääntäjä voi suojata teitä virheiltä. Hyödyt:
- Tyyppiturvallisuus — tyypit eivät sekoitu vahingossa.
- Ei castauksia — koodi on selkeämpää.
- Uudelleenkäytettävyys — yksi luokka toimii monien tyyppien kanssa.
Mikä T on?
T (tyyppiparametri) on todellisen tyypin paikanvaraaja. Kun kirjoitatte Box<String>, kääntäjä käsittelee T:tä String-tyyppinä tässä käyttökohteessa.
Koodi: Box<T>
Box<T>: Kun T:n tilalle annetaan String, hyväksytään vain String. Väärä tyyppi aiheuttaa käännösaikaisen virheen; ajonaikaisia yllätyksiä ei tule.
public class Main {
// A tiny generic container
static class Box<T> {
private T value;
void set(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
Box<String> bs = new Box<String>(); // T becomes String
bs.set("hello");
System.out.println(bs.get()); // no cast needed
// Box<Integer> bi = new Box<Integer>();
// bi.set("oops"); // would not compile: String is not Integer
}
}
Koodi: diamond-tyypin päättely
<> (diamond) avulla kääntäjä päättelee oikeanpuoleisen tyypin. Jos se ei sovi vasemmanpuoleiseen tyyppiin, käännös epäonnistuu; näin saadaan tyyppiturvallisuutta.
public class Main {
static class Box<T> {
private T value;
Box() {}
Box(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
// Type on the left, diamond on the right — compiler infers T
Box<Integer> a = new Box<>(123);
Box<String> b = new Box<>("hi");
System.out.println(a.get() + 1); // 124
System.out.println(b.get().toUpperCase());
}
}
Rajoitetut tyyppiparametrit
Rajoitteet: Jotkin geneeriset metodit tarvitsevat tietyn ominaisuuden, kuten Comparable-ominaisuuden. Esimerkiksi <T extends Comparable<T>> tarkoittaa, että T:n on oltava vertailukelpoinen.
Koodi: rajoitettu geneerinen metodi
Geneerinen metodi: <T extends Comparable<T>>. Integer ja String ovat yhteensopivia, koska molemmat implementoivat Comparable-interfacen.
public class Main {
// Generic method: works for any Comparable type
static <T extends Comparable<T>> T min(T a, T b) {
return (a.compareTo(b) <= 0) ? a : b;
}
public static void main(String[] args) {
System.out.println(min(3, 7)); // Integer
System.out.println(min("apple", "banana")); // String (lexicographic)
}
}
Geneeristen tyyppien perusteiden tarkistus
Pikatarkistus: Mikä on Box<String>-tyyppisten geneeristen tyyppien käytön tärkein hyöty?
Kertaus
Kertaus: T on paikanvaraaja, jonka tyyppi päätellään diamond-syntaksin avulla. Rajoitteilla (extends Comparable) teemme geneerisistä metodeista turvallisia ja tehokkaita.
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”Geneeristen tyyppien perusteet (T, päättely)” ilmainen?
Kyllä – oppitunnin ”Geneeristen tyyppien perusteet (T, päättely)” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 3 oppituntia.
Mitä opin oppitunnilla ”Geneeristen tyyppien perusteet (T, päättely)”?
Oppikaa geneeriset tyyppiparametrit T , ymmärtäkää, miksi ne lisäävät käännösaikaista turvallisuutta, ja nähkää, miten diamond-operaattori päättelee tyypit. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/3.
Kuinka kauan ”Geneeristen tyyppien perusteet (T, päättely)”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Rajapinnat käytännössä
- Geneeristen tyyppien perusteet (T, päättely)
- Geneeriset metodit ja luokat