【Java】変数名でgetterをしたい。。。「isHas○○」ではなく「has○○」に~
以下のようなオブジェクトクラスがあるとします
lombokの仕様上、「firstName」の値を取得する場合「getFirstName()」、「hasData」の値を取得する場合「isHasData()」となります
@Value
public class Person {
private String firstName;
private String lastName;
private int age;
private boolean hasData;
}
ここである論争が始まります
「isHasDate()」ってメソッド名的におかしくない??
です。。。
「is」と「has」が合体していることに疑問を抱くのです
isは「です」、has「がある」なので、「データがあるです」というメソッドとなる(笑)
データの存在有無なのであれば、「has」だけでいいのですがlombokが邪魔をする。。。
そんな時に使うと良いのが「@Accessors(fluent=true)」です
同じくLombokのJライブラリで提供されているアノテーションです!!
このアノテーションは、getterメソッドやsetterメソッドの生成方法を制御するために使用されます
具体的には、fluent=trueを指定することで、Lombokが自動的にフルエント(Fluent)インターフェースパターンを生成します
このパターンではsetterメソッドが値を設定したオブジェクト自体を返すようになります
以下に、@Accessors(fluent=true)の使い方を紹介します
@Value
public class Person {
private String firstName;
private String lastName;
private int age;
@Accessors(fluent=true)
private boolean hasData;
}
上記のようにフィールドに「@Accessors(fluent=true)」を設定してみました
そうすると
Person person = new Person("佐藤", "太郎", 20, true);
boolean result = person.hasData();
resultは「true」となります
「@Accessors(fluent=true)」を付与しない状態だと「isHasData()」でしたが、付与することで「hasData()」でhasData使用することができるのです
是非参考ください
ではっ
是非フォローしてください
最新の情報をお伝えします