Java オプションパラメータ
- Java でオプションのパラメータを使用するには、メソッドのオーバーロードを使用する
-
Java で
Optional
コンテナオブジェクトを使用してオプションのパラメータを設定する -
Java で
Build Pattern
を使用してオプションのパラメータを設定する -
Java で
Varargs
を使用してオプションのパラメータを設定する

Java クラスでは、メソッドまたは関数を設計するときに、一部の引数がその実行のためにオプションである場合があります。Java にはオプションのパラメーターはありませんが、この記事で説明する次の手法を使用してオプションのパラメーターをシミュレートできます。
Java でオプションのパラメータを使用するには、メソッドのオーバーロードを使用する
クラスに同じ名前で異なるパラメーターをとる複数のメソッドがある場合、それはメソッドオーバーロードと呼ばれます。ここに、同じ名前 mul
の 2つのメソッドを持つ Multiply
というクラスがあります。メソッドに渡される引数は異なり、1つは 2つの int 型引数を取り、もう 1つは 3つを取ります。
class Multiply{
static int mul(int a,int b){return a*b;}
static int mul(int a,int b,int c){return a*b*c;}
}
class TestOverloading{
public static void main(String[] args){
System.out.println(Multiply.mul(2,11));
System.out.println(Multiply.mul(2,2,11));
}}
出力:
22
44
Java で Optional
コンテナオブジェクトを使用してオプションのパラメータを設定する
Java では、Optional
は null 以外の値を含む場合と含まない場合があるコンテナオブジェクトです。値が存在する場合、isPresent()
メソッドは true を返し、get()
メソッドは値を返します。
null 値が予想される場合は、このクラスの ofNullable()
メソッドを使用できます。空の Optional
オブジェクトを返し、例外をスローしません。ここでは、変数 lastName
が Student
クラスオブジェクトに null で渡されるため、null 値を含む可能性のある Optional
オブジェクトを作成しました。
メソッド isPresent()
は、値が存在するかどうかをチェックします。それ以外の場合は、以下のコードに示すように、デフォルトの文字列が割り当てられます。
import java.util.Optional;
public class Main
{
public static void main(String args[]){
Student("John",null,25);
}
private static void Student(String name, String lastName, int age){
Optional<String> ln = Optional.ofNullable(lastName);
String a = ln.isPresent() ? ln.get() : "Not Given";
System.out.println("name : "+name + ", lastname : "+a +", age : "+age);
}
}
出力:
name : John, lastname : Not Given, age : 25
Java で Build Pattern
を使用してオプションのパラメータを設定する
Build Pattern
の目的は、複雑なオブジェクトの構築をその表現から分離することです。オブジェクトの作成に必要なロジックとデフォルトの構成値は、builder
クラスに含まれています。
このコードでは、追加のクラス UserBuilder
を使用します。これは、不変性を失うことなく User
オブジェクトを構築するために必要なすべてのプロパティとオプションのパラメーターの組み合わせを含みます。User
クラスには、不変性を維持するためのゲッターのみがあり、セッターはありません。
public class User
{
private final String firstName; // required
private final String lastName; // required
private final int age; // optional
private final String email; // optional
private User(UserBuilder builder) {
this.firstName = builder.firstName;
this.lastName = builder.lastName;
this.age = builder.age;
this.email = builder.email;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getAge() {
return age;
}
public String getEmail() {
return email;
}
@Override
public String toString() {
return "User: "+this.firstName+", "+this.lastName+", "+this.age+", "+this.email;
}
public static class UserBuilder
{
private final String firstName;
private final String lastName;
private int age;
private String email;
public UserBuilder(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public UserBuilder age(int age) {
this.age = age;
return this;
}
public UserBuilder email(String email) {
this.email = email;
return this;
}
public User build() {
User user = new User(this);
return user;
}
}
}
TestUser
クラスでは、UserBuilder
を使用して User
クラスオブジェクトを作成します。user1
オブジェクトの場合、すべての属性を渡しますが、user2
オブジェクトの場合、age
および email
引数を渡しません。したがって、オプションのパラメータにはデフォルト値が使用されます。build()
メソッドは User
オブジェクトを作成して返します。
public class TestUser {
public static void main(String args[]){
User user1 = new User.UserBuilder("John", "Doe")
.age(24)
.email("john.doe@dex.com")
.build();
System.out.println(user1);
User user2 = new User.UserBuilder("Jack", "Luther")
.build();
System.out.println(user2);
}
}
出力:
User: John, Doe, 24, john.doe@dex.com
User: Jack, Luther, 0, null
Java で Varargs
を使用してオプションのパラメータを設定する
Java では、Varargs
(可変長引数)を使用すると、メソッドはゼロまたは複数の引数を受け入れることができます。この特定のアプローチの使用は、メンテナンスの問題を引き起こすため、お勧めしません。
以下のコードには、メソッド display()
を持つ VarargsExample
クラスがあります。このメソッドは、String
タイプの任意の数のパラメーターを取ります。varargs
を使用する際に留意すべきいくつかのルールは、各メソッドが持つことができる varargs
パラメーターは 1つだけであり、それが最後のパラメーターでなければならないということです。
public class VarArgsCheck {
public static void main (String args[]){
VarargsExample.display();
VarargsExample.display("here","are","the","varargs","to","check");
}
}
class VarargsExample {
static void display(String... values) {
String arr[] = values;
System.out.println("display method invoked ");
System.out.println("Value length "+arr.length);
}
}
出力:
display method invoked
Value length 0
display method invoked
Value length 6
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn関連記事 - Java Function
- Java でブールメソッドを返す
- Java の関数から何も返さない
- Java の仮想関数
- Java エラーInvalid Method Declaration; Return Type Required を修正
- Java 関数で 2つの値を返す