Java
 Computer >> コンピューター >  >> プログラミング >> Java

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の型システムへの理解を深めるのに最適です。

  1. Java 9でJavaFXを使ってJShellをプログラムから実装する方法

    JShellは、サンプル式を対話的に実行できるツールです。通常はコマンドラインから利用しますが、JavaFXアプリケーションの中でプログラム的にJShellを実装することも可能です。その場合、Javaプログラムに以下のパッケージをインポートする必要があります。import jdk.jshell.JShell; import jdk.jshell.SnippetEvent; import jdk.jshell.VarSnippet;これらのクラスの役割は次のとおりです。JShell:評価エンジンの本体。式や文を評価(eval)するためのAPIを提供します。SnippetEvent:評価結果として

  2. JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説

    JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー