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);
このコードは、aとbのうち大きい方の値を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);
このコードは、strがnullでなければその値を、nullであれば"文字列はnullです"をmessageに代入します。出力は文字列はnullですとなります。
これらの例からわかるように、Javaの三項演算子はコードを簡潔に書くための便利なツールです。ただし、複雑な条件や式を扱う場合は、コードの可読性を保つために通常のif-else文を使用することが推奨されます。
Javaのジェネリクスのワイルドカードとは何か
Javaのジェネリクスのワイルドカード(wildcard)は、不明な型を表すための特殊な記号?です。ワイルドカードは、ジェネリクスの型パラメータが何であるかを具体的に知らない場合や、複数の型パラメータに対応する必要がある場合に使用されます。
ワイルドカードは主に以下の3つの形式で使用されます:
-
無制限ワイルドカード:
?。これは任意の型を表します。例えば、List<?>は「何らかの型のオブジェクトを要素とするリスト」を表します。 -
上限付きワイルドカード:
? extends 型。これは指定した型またはそのサブタイプを表します。例えば、List<? extends Number>は「Number型またはそのサブタイプ(Integer、Doubleなど)のオブジェクトを要素とするリスト」を表します。 -
下限付きワイルドカード:
? 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>();
このコードでは、numbersはNumberまたはそのサブタイプのリストを参照することができます。最初はIntegerのリストを参照していますが、次にDoubleのリストを参照するように変更されています。
例3:下限付きワイルドカード
List<? super Integer> integers = new ArrayList<Number>();
integers.add(10);
このコードでは、integersはIntegerまたはそのスーパータイプのリストを参照することができます。Numberのリストを参照し、そのリストにIntegerの値を追加しています。
これらの例からわかるように、Javaのジェネリクスのワイルドカードはコードを柔軟に書くための便利なツールです。ただし、ワイルドカードを使用すると型安全性が損なわれる可能性があるため、適切な使用が求められます。