木. 1月 23rd, 2025

Javaの三項演算子とは何か

Javaの三項演算子(ternary operator)は、3つのオペランドを持つ唯一の演算子です。この演算子は以下の形式で使用されます:

条件 ? 式1 : 式2

ここで、条件はブール型の式で、式1式2は任意の式です。

動作は次のようになります:
条件trueの場合、式1が評価され、その結果が全体の式の結果となります。
条件falseの場合、式2が評価され、その結果が全体の式の結果となります。

この演算子は主にif-else文を短く書くために使用されます。例えば、次のif-else文:

if (条件) {
    結果 = 式1;
} else {
    結果 = 式2;
}

は、三項演算子を使用して次のように書くことができます:

結果 = 条件 ? 式1 : 式2;

このように、Javaの三項演算子はコードを簡潔に書くための便利なツールです。ただし、複雑な条件や式を扱う場合は、コードの可読性を保つために通常のif-else文を使用することが推奨されます。

三項演算子の使用例

Javaの三項演算子の使用例を以下に示します。

例1:最大値の取得

int a = 10;
int b = 20;
int max = (a > b) ? a : b;
System.out.println("最大値は " + max);

このコードは、abのうち大きい方の値をmaxに代入します。出力は最大値は 20となります。

例2:偶数・奇数の判定

int num = 15;
String result = (num % 2 == 0) ? "偶数" : "奇数";
System.out.println(num + "は" + result);

このコードは、numが偶数か奇数かを判定します。出力は15は奇数となります。

例3:nullチェック

String str = null;
String message = (str != null) ? str : "文字列はnullです";
System.out.println(message);

このコードは、strnullでなければその値を、nullであれば"文字列はnullです"messageに代入します。出力は文字列はnullですとなります。

これらの例からわかるように、Javaの三項演算子はコードを簡潔に書くための便利なツールです。ただし、複雑な条件や式を扱う場合は、コードの可読性を保つために通常のif-else文を使用することが推奨されます。

Javaのジェネリクスのワイルドカードとは何か

Javaのジェネリクスのワイルドカード(wildcard)は、不明な型を表すための特殊な記号?です。ワイルドカードは、ジェネリクスの型パラメータが何であるかを具体的に知らない場合や、複数の型パラメータに対応する必要がある場合に使用されます。

ワイルドカードは主に以下の3つの形式で使用されます:

  1. 無制限ワイルドカード?。これは任意の型を表します。例えば、List<?>は「何らかの型のオブジェクトを要素とするリスト」を表します。

  2. 上限付きワイルドカード? extends 型。これは指定した型またはそのサブタイプを表します。例えば、List<? extends Number>は「Number型またはそのサブタイプ(Integer、Doubleなど)のオブジェクトを要素とするリスト」を表します。

  3. 下限付きワイルドカード? super 型。これは指定した型またはそのスーパータイプを表します。例えば、List<? super Integer>は「Integer型またはそのスーパータイプ(Number、Objectなど)のオブジェクトを要素とするリスト」を表します。

ワイルドカードを使用することで、より柔軟なコードを書くことができます。ただし、ワイルドカードを使用すると型安全性が損なわれる可能性があるため、適切な使用が求められます。

ジェネリクスのワイルドカードの使用例

Javaのジェネリクスのワイルドカードの使用例を以下に示します。

例1:無制限ワイルドカード

List<?> list = new ArrayList<String>();
list = new ArrayList<Integer>();

このコードでは、listは任意の型のリストを参照することができます。最初はStringのリストを参照していますが、次にIntegerのリストを参照するように変更されています。

例2:上限付きワイルドカード

List<? extends Number> numbers = new ArrayList<Integer>();
numbers = new ArrayList<Double>();

このコードでは、numbersNumberまたはそのサブタイプのリストを参照することができます。最初はIntegerのリストを参照していますが、次にDoubleのリストを参照するように変更されています。

例3:下限付きワイルドカード

List<? super Integer> integers = new ArrayList<Number>();
integers.add(10);

このコードでは、integersIntegerまたはそのスーパータイプのリストを参照することができます。Numberのリストを参照し、そのリストにIntegerの値を追加しています。

これらの例からわかるように、Javaのジェネリクスのワイルドカードはコードを柔軟に書くための便利なツールです。ただし、ワイルドカードを使用すると型安全性が損なわれる可能性があるため、適切な使用が求められます。

By jakoten

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です