Tyyppilähetys Javassa on prosessi, jossa yksi tietotyyppi muunnetaan toiseksi tietotyypiksi valuoperaattorin avulla. Kun määrität arvon yhdestä primitiivisestä tietotyypistä toiselle tyypille, tätä kutsutaan tyypin castingiksi. Muuttujan käytön mahdollistamiseksi tietyllä tavalla tämä menetelmä edellyttää, että Java-kääntäjä käsketään käsittelemään yhden tietotyypin muuttujaa toisen tietotyypin muuttujana.
Syntaksi:
variableName = () value;>
Tyyppivalutyypit
Javassa on kahdenlaisia Type Castingeja:
- Laajentava tyyppivalu
- Kapea tyyppivalu
Laajentava tyyppivalu
Alempi tietotyyppi muunnetaan korkeammaksi prosessilla, joka tunnetaan nimellä laajennustyyppinen valu. Implisiittinen tyyppivalu ja valu alas ovat joitakin nimiä sille. Se tapahtuu luonnollisesti. Koska tietojen katoamisen mahdollisuutta ei ole, se on turvallinen. Levennystyypin valu tapahtuu, kun:
- Kohdetyypin on oltava suurempi kuin lähdetyyppi.
- Molempien tietotyyppien on oltava yhteensopivia keskenään.
Syntaksi:
larger_data_type variable_name = smaller_data_type_variable;>
Java
string.valueof java
// Java program to demonstrate Widening TypeCasting> import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >int> i =>10>;> > >// Wideing TypeCasting (Automatic Casting)> >// from int to long> >long> l = i;> > >// Wideing TypeCasting (Automatic Casting)> >// from int to double> >double> d = i;> > >System.out.println(>'Integer: '> + i);> >System.out.println(>'Long: '> + l);> >System.out.println(>'Double: '> + d);> >}> }> |
jalat vs jalka
>
>Lähtö
Integer: 10 Long: 10 Double: 10.0>
Kapea tyyppivalu
Prosessi, jossa suurempaa tietotyyppiä pienennetään pienemmäksi, tunnetaan kaventavana tyypin valuna. Casting up tai eksplisiittisen tyypin valu ovat muita nimiä sille. Se ei tapahdu itsestään. Jos emme nimenomaisesti tee niin, tapahtuu käännösaikavirhe. Kaventava tyypin suoratoisto ei ole turvallista, koska dataa saattaa kadota, koska alemman tietotyypin sallitut arvot ovat pienemmät. Cast-operaattori auttaa nimenomaisessa casting-prosessissa.
Syntaksi:
smaller_data_type variable_name = (smaller_data_type) larger_data_type_variable;>
Esimerkki:
Java
// Java Program to demonstrate Narrow type casting> import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >double> i =>100.245>;> > >// Narrowing Type Casting> >short> j = (>short>)i;> >int> k = (>int>)i;> > >System.out.println(>'Original Value before Casting'> >+ i);> >System.out.println(>'After Type Casting to short '> >+ j);> >System.out.println(>'After Type Casting to int '> >+ k);> >}> }> |
kuinka tulostaa java
>
>Lähtö
Original Value before Casting100.245 After Type Casting to short 100 After Type Casting to int 100>
Eksplisiittisen suoratoiston tyypit
Eksplisiittistä suoratoistoa on pääasiassa kahdenlaisia:
- Eksplisiittinen upcasting
- Selkeä alaslasku
Eksplisiittinen upcasting
Upcasting on prosessi, jossa alatyyppi heitetään supertyypiksi periytymispuun ylöspäin suuntautuvassa suunnassa. Kun alaluokan objektiin viitataan superluokan viitemuuttujalla, automaattinen prosessi käynnistyy ilman lisäponnistuksia.
Esimerkki:
Java
minä vuonna tietokone keksittiin
// Java Program to demonstrate Explicit Upcasting> import> java.io.*;> > class> Animal {> >public> void> makeSound()> >{> >System.out.println(>'The animal makes a sound'>);> >}> }> > class> Dog>extends> Animal {> >public> void> makeSound()> >{> >System.out.println(>'The dog barks'>);> >}> > >public> void> fetch()> >{> >System.out.println(>'The dog fetches a ball'>);> >}> }> class> GFG {> >public> static> void> main(String[] args)> >{>// Upcasting> >Animal animal =>new> Dog();> >// Calls the overridden method in Dog class> >animal.makeSound();> >// This would give a compile error as fetch() is not> >// a method in Animal class> >// animal.fetch();> >}> }> |
>
>Lähtö
The dog barks>
Selkeä alaslasku
Kun alaluokkatyyppi viittaa emoluokan objektiin, prosessia kutsutaan downcastingiksi. Jos se tehdään manuaalisesti, kääntäjä antaa ajonaikaisen ClassCastException-virheen. Se voidaan tehdä vain käyttämällä instanceof-operaattoria. Vain jo ylöskäännetty objekti on mahdollista.
Esimerkki:
Java
java char int
// Java Program to demonstrate Explicit downcasting> import> java.io.*;> class> Animal {> >public> void> eat()> >{> >System.out.println(>'The animal is eating.'>);> >}> }> > class> Cat>extends> Animal {> >public> void> meow()> >{> >System.out.println(>'The cat is meowing.'>);> >}> }> > class> GFG {> >public> static> void> main(String[] args)> >{> >Animal animal =>new> Cat();> >animal.eat();> > >// Explicit downcasting> >Cat cat = (Cat)animal;> >cat.meow();> >}> }> |
>
>Lähtö
The animal is eating. The cat is meowing.>