プログラミング

「Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object.」への対応

  • POST
「Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object.」への対応 はじめに Lombokの@Dataのアノテーションを親クラス・子クラスの両方に付けている際に、にビルド時に以下の警告メッセージが表示されます。 Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type. ↓和訳 equals/hashCode の実装を生成しているが、superclass を呼び出していない このクラスは java.lang.Object を継承していないにもかかわらずです もしこれが意図的なものであれば、型に '@EqualsAndHashCode(callSuper=false)' を追加してください https://stackoverflow.com/questions/56583423/generating-equals-hashcode-implementation-but-without-a-call-to-superclass-even 本記事では、上記エラーの対応について紹介します。 警告の内容 @Dataを定義した抽象クラスを継承した子クラスは、java.lang.Objectを直接継承していないことになります。 そのため、equlesメソッドやtoStringメソッドはjava.lang.Objectのものを利用することができず、 デフォルトでは開発者が自分で実装する必要がある、ということ示した警告です。 警告を回避する方法 回避するためには継承したクラスで以下のannotationを追加することで自前での実装を避けることができます。 @EqualsAndHashCode(callSuper=true) @ToString(callSuper=true) 上記を設定することで、スーパークラスであるjava.lang.Objectを利用することができます。 おわりに Lombokの@Dataのアノテーションを親クラス・子クラスの両方に付けている際の警告への対応を紹介しました。 本記事がJavaエンジニアの参考になれば幸いです。

今更Java入門

  • POST
今更Java入門 Javaとは 名前の由来 開発元のサン・マイクロシステムズ社の近くのコーヒーショップのウェートレスがつけていたシャツのロゴ「It’s a jungle out there, So drink your java!」からとったと言われている。 もともとOakという名前だったが、Oakという名称は当時すでに商標登録されていたため,正式リリースのために別名を付けた。 コンパイルの方法 javac ファイル名で実施。 $ javac sample.java 定数の定義方法 final int 変数名 用語 ネスト カッコの入れ子のこと リテラル 文字や数字の表記のための値 イミュータブル 作成後に値の変更ができないこと ラッパー あるクラスやデータ型などが提供する機能やデータを含みつつ、 別の形で提供するもののことをラッパーという。 元の機能を包み、覆い隠す役割を果たすためにこのように呼ばれる。 JAR(Java Archive) コンパイルされた複数のJavaバイトコードや、画像などのリソースを一つにまとめてZIP圧縮したファイルのこと。 クラスファイルをすべて1つのファイルにまとめる マニフェストファイル バージョンや、jarファイルの作成に使用したツールなどのJARファイルの内容が記述されている Manifest-Version: 1.0 Ant-Version: Apache Ant 1.6.5 Created-By: 1.4.2_09-b05 (Sun Microsystems Inc.) Main-Class: Sample データの型 プリミティブ型 格納サイズが決まっているもの(int, short, long, fload, double, char, boolean)