Java 9のJShellで整数型キャストを実装する方法を解説
JShellとは
JShellは、Java 9で導入されたコマンドライン型の対話ツールです。プログラマーはmain()メソッドを宣言することなく、単純なステートメント、式、変数、メソッド、クラス、インターフェースなどをその場で実行できます。学習やプロトタイピングに非常に便利な機能です。
JShellにおける型キャストの挙動
JShellでは、型キャスト(typecasting)に関する問題がある場合、コンパイラがエラーをスローしてプログラマーに警告します。ただし、そのリスクを理解した上で意図的に行う場合は、明示的キャスト(explicit casting)が必要になります。
逆に、小さいデータ値をより大きな型へ格納するような変換の場合は、暗黙的キャスト(implicit casting)が自動的に適用されます。
整数型キャストの2種類
整数型のキャストには、主に次の2つのケースがあります。
- リテラルから変数への代入: 例えば
short s1 = 123456;のように、データがshort型の範囲を超えている場合です。これはコンパイル時に判明するため、コンパイラがエラーを出します。 - 変数から変数への代入: 例えば
s1 = i1;のようなケースです。この時点でint型変数i1に格納されている値が4567であれば、short型の範囲内に収まっているため、コンパイラはエラーをスローしません。しかし、意図を明確にするには明示的キャストs1 = (short) i1;を使って事前に対応しておくのが安全です。
実装例:暗黙的・明示的な型変換のコード
以下のコードスニペットでは、暗黙的キャストと明示的キャストの両方を実装して確認できます。
C:\Users\User>jshell | Welcome to JShell -- Version 9.0.4 | For an introduction type: /help intro jshell> byte b = 128; | Error: | incompatible types: possible lossy conversion from int to byte | byte b = 128; | ^-^ jshell> short s = 123456; | Error: | incompatible types: possible lossy conversion from int to short | short s = 123456; | ^----^ jshell> short s1 = 3456 s1 ==> 3456 jshell> int i1 = 4567; i1 ==> 4567 jshell> s1 = i1; | Error: | incompatible types: possible lossy conversion from int to short | s1 = i1; | ^^ jshell> s1 = (short) i1; s1 ==> 4567 jshell> int num = s1; num ==> 4567
まとめ
この例から分かるように、byte型やshort型の範囲を超える値を代入しようとすると「possible lossy conversion(データ損失の可能性のある変換)」エラーが発生します。一方、short型からint型のような拡大変換は暗黙的に行われ、エラーになりません。JShellを使えば、こうした型変換の挙動を手軽に試せるため、Javaの型システムへの理解を深めるのに最適です。
-
Java 9でJavaFXを使ってJShellをプログラムから実装する方法
JShellは、サンプル式を対話的に実行できるツールです。通常はコマンドラインから利用しますが、JavaFXアプリケーションの中でプログラム的にJShellを実装することも可能です。その場合、Javaプログラムに以下のパッケージをインポートする必要があります。import jdk.jshell.JShell; import jdk.jshell.SnippetEvent; import jdk.jshell.VarSnippet;これらのクラスの役割は次のとおりです。JShell:評価エンジンの本体。式や文を評価(eval)するためのAPIを提供します。SnippetEvent:評価結果として
-
JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説
JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー