【Java】キャストについて
本稿はキャストについて説明します。
キャストとは特定の型を別の型に変換できる機能です。
ただし、キャストできないパターンも当然あります。
安全なキャストは暗黙的に行えますが危険なキャストは明示的に指定しなければなりません。
基本型同士のキャスト
boolean型以外は基本的にキャストが可能です。
ただし、キャストにより正確なデータが維持できなくなる可能性がある場合は明示的にキャストしてあげる必要があります。
public class Test { public static void main(String[] args){ short s = 200; int i = s;//キャストは不要。 int i2 = 100; char s2 = (char)i2;//キャストが必要。 } }
文字型であるcharも数値データで保持しているため、int型などからキャスト可能です。
基本型と参照型のキャスト(オートボクシング)
基本型にはラッパークラスという基本型と関係の深いクラスがそれぞれ用意されています。
そのクラスへのキャストであれば暗黙的にキャストされます。
この暗黙キャストをオートボクシングといいます。
基本型とラッパークラスの一覧です。
基本型 | ラッパークラス(参照型) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
また、基本型からObject型への代入はオートボクシングが機能して可能になります。
public class Test { public static void main(String[] args){ int i = 100; Integer num = i; int reverse = num; Object obj = reverse; System.out.println(obj); } }
100
参照型同士のキャスト
参照型同士のキャストはクラスの親子関係によってキャストできるかが決まります。
親クラスへのキャストは安全であるため、暗黙的にキャストできます。
親クラスから子クラスへのキャストは危険なキャストなので明示的なキャストが必要になります。
public class Test { public static void main(String[] args){ Comic comic = new Comic(); Book book = comic;//キャスト不要 Comic castComic = (Comic)book;//明示キャストが必要 } } class Book{ } class Comic extends Book{ }
ディスカッション
コメント一覧
まだ、コメントがありません