アーシの毎日インプット

毎日1つ以上学習する。学習した内容を公開する。を目標に自分のスキルアップを目指します。

Java

enumは==で比較する

長年Javaのプログラミングをやってきて初めて知ったのですが・・・ enumの要素ってequalsを使用せず==で比較をしていいんですね enumとして定義している以上、単一のインスタンスだからなのだそうです。 ついつい比較にequalsを使用していました。 equalsを…

Javaの開発環境を整えました

プログラミングスクールでメンター業務をやるにあたって、私個人のPCのJavaの開発環境を整えました。 といっても、プログラミングスクールの受講生用のカリキュラムを見て、それ通りにインストールしただけです。 現在、仕事ではJavaのIDEはIntelliJを使って…

Java8→Java17は性能アップ

しばらく前から、仕事でJava8からJava17に上げる作業をしていました。 arsinput.hatenablog.jp そして、ようやくJava8とJava17との非互換を色々と解決し、Java17へのアップデートがほぼほぼ完了しました。 Java8からJava17に上げるだけで何が変わるの? とい…

lombok互換性なさすぎ

仕事でJava8からJava17へのソースの書き換えをやっていることはちらほら お伝えしていましたが・・・ 最近、lombokの互換性がなさすぎてハマっています。 lombok自体はJavaでデータクラスを作成した際にアノテーション一つでGetter,Setterなどのメソッドを作…

【Java】予約語増えてる

仕事でJava8からJava17へのアップデートに向けた対応をしているのですが、やっぱりちょこちょこ非互換があるんですね。 Javaのコンパイラを17にあげてコンパイルしようとしたら、 『リリース9から'_'はキーワードなので識別子として使用することはできません…

JavaのSwitch文の進化

JavaのSwitch文の進化について、chat GPTに聞いたらサクっと教えてくれたので、そのまま貼って今日の記事にしちゃいました。 画像データの重さの関係で解像度が低いのはご容赦を・・・ Javaの新しいSwitch文を使いこなしたいです。

Java8を17にあげたい

私が現在携わっているプロジェクトではJavaのバージョンは8を使っています。 このようなプロジェクトでは今後Java8をJava17にアップデートしたいという課題がでてくるのではないでしょうか。 Java8のサポートはすでにPremierサポートが2022年3月に切れており…

JavaのPairやTripleで戻り値を増やせる

Javaで複数の変数情報を持つために、PairやTripleというものがあることを知りました。 Javaで戻り値を多値で返したい - エキサイト TechBlog. 使い方は上記のページを見れば分かりますが、Pairであれば2つの変数を、Tripleであれば3つの変数を取り扱うことが…

三項演算子

今更ながら『三項演算子』という名前を知りました。 Javaにおいては以下のような形で記載する条件分岐のことです。 String result = score > 50 ? "OK" : "NG"; こういった条件分岐自体は使うことはあったのですが、これを『三項演算子』と呼ぶとは知りませ…

【Java】new ArrayList<>()とnewArrayList

chatGPTさん優秀すぎなので、私が疑問に思っていたことを簡単に解決してくれました。 ということで、私が学習したことをそのまま記事にしてみます。 chatGPTのおかげでブログの時間を少し節約し、資格試験の勉強などに使えるかもしれません。 AIで生活を豊か…

JavaのMapのソートとchatGPT

最近、chatGPTが話題になっていますよね。 遅ればせながら使ってみて、仕事に必要なJavaの知識を教えてもらえたので感動しています。 JavaのMapのソートで行き詰った時にchatGPTに聞いたら解決しました。 すごい、私の仕事、なくなっちゃう・・・

調べたいときに忘れるMVNrepository

Java開発をしているとjarの最新版の確認や取込でたまに訪れるサイトがあります。 しかし、訪問頻度が数ヶ月に1回程度なので、いつも訪ねて調べものしたいという時にサイトの名前を忘れて無駄に検索をしてしまいます。 ということで、自分用にそのサイトのURL…

IntelliJ

9月から新しい現場で働き始めていますが、現在、一番の変化で大変だなと感じている部分は、プロジェクト開発にIntelliJを使うようになったことです。 IntelliJは統合開発環境の一つで、私の場合、主にJavaプロジェクトの開発に使います。 今まで私はjavaプロ…

条件分岐の戻り値の派閥

プログラミング、同じ処理を実装するのでも色々な書き方をすることができます。 それを派閥と呼んだりするのですが、今回はそんなプログラミングの中で、 『条件分岐の結果、その正誤を返却するプログラム』について、 派閥が存在するだろうなと思って取り上…

【JUnit】Mockの実行何回目かで挙動を変える

Javaの単体テストをJUnitで行っているとき、 特定の箇所の挙動確認でMockをしたとき、同一メソッドを呼んでいる他の箇所でも同じようにMockされテストが上手くいかないということがあると思います。 実はJUnitで使用するMockitoでは、Mock時の戻り値や例外を…

Javaのソースをコンパイルせずに実行できる!?

Javaといえばコンパイルが必要なプログラミング言語として有名ですが、 Java11から、ソースファイル1つだけで完結しているプログラムはコンパイルすることなく直接javaコマンドで実行できるそうです。 び、微妙・・・ Javaで何かを実現したいときってソース…

【JUnit】Answerでmock化した箇所を別の処理に

JUnitでmock化したメソッドに、代わりに別の処理を実装するためにはAnswerという機能を使うことで実現できます。 私が仕事の時にAnswerの実装で参考にした記事はこちらです。 blog1.mammb.com ここ4ヶ月くらいでどんどんJavaに詳しくなっていく自分がいます。

【Jackson】JSONのNONNULL定義

JavaにてJsonを扱う時に便利なJacksonライブラリ。 JacksonのJsonPropertyアノテーションを使用したDTOを作成し、DTOのデータをJSONの文字列に変換すると、デフォルトではnullの項目もnullという値を文字列で出力してしまいます。 nullの項目の場合、項目名…

【JUnit】containsでテストを楽に

JavaでJUnit5を使用しているテストのとき、ログ出力機能で私が定義した要素以外も出力されるとき、私が定義した内容だけ検証する方法はないかと思い、ちょこっと調べてみました。 今回はあらかじめcontainsを使ったテストができるはずだと思って調べたらやっ…

【Java】直接配列を引数に渡す

Javaのメソッドを呼び出す際、引数に配列の値を直接書いて呼び出す方法を探しました。 基本的に、下記のような実行対象メソッドがある時 void sampleA(String args) { 処理 } 一般的には変数に配列の値を入れてから呼び出すことが多いです。 String ary = {"…

StackOverflow

先日、Java開発のテストをしていたらStackOverFlowエラーが発生しました。 StackOverFlowというとシステムエンジニアの中では圧倒的な情報量のQ&Aサイトが思い浮かぶかと思いますが、 ja.stackoverflow.com エラーの種類としてもしっかり存在します。 ちなみ…

【JUnit】Captorで途中の値を取得する

JUnitでテストを行う際、MockitのCaptorという機能で処理の途中で他のメソッドへ渡す引数の値を取得することができるということを知りました。 処理の途中で文字列やDTOを構築し、戻り値として返却しないメソッドで、どのような値を構築できたかをテストする…

【Java】JUnit5のガイド

今まで仕事における単体テスト工程を進めるために漫然とJUnit5を使ったテストのやり方を調べていましたが、一度しっかりと体系的に学びたいと思い、ユーザーガイドを読んでみました。 JUnit 5 ユーザーガイド 雑多に調べていただけでは分からなかったことが…

【Java】Gradleが気になって

直近、私が働いているJava開発ではビルドツールにGradleを使用しています。 今まで私が携わってきたJava開発でのビルドツールは基本的にMaven、たまにAntを使うくらいだでした。 正直、Gradleというビルドツールを4月まで知りませんでした。 とはいえ、Java…

【Java】JUnit5の基本

ゴールデンウィーク中にJUnitについて学びたい! 最近はJUnit5が主流で、今まで私が携わってきたJUnit4から結構大きく変わっているようです。 今まで当たり前に使っていた機能が結構非推奨になっており、逆にどんなことができるのか・・・ 2つほど役立ちそう…

【Java】@Spyでテストクラスの一部メソッドをモックする

JUnitのモックのお話です。 基本的にJUnitを使ったテストでは、下記のようにテスト対象のクラスに、そこから呼び出されるクラスのモックを注入(inject)します。 public ClassATest { @Injectmocks ClassA aCls; @Mock ClassB bCls; (以下略) でも、クラス単…

【Java】Mockitって体系的にまとまってる記事が見つからない

最近Javaの単体テストをするためにMockitについて結構調べているのですが、インターネットで体系的にまとまってる記事を見つけられません。 Mockitで検索すると、最初の記事に今は非推奨となっている機能を使った説明がでてきます。 例えるなら、「総理大臣…

【Java】知ってるMock古くなってた

久しぶりに仕事でJavaのPTソースを書いているアーシです。 JavaのPTというとJUnitとMockですが・・・ 私の知っているMockは古くなっていました。 使えると思っていたメソッドが非推奨メソッドになっていたりします。 最新の技術に追いつけるよう頑張ります・…

【Java】String.valueOfで環境差異のバグを引いた話

結論からいうと、Javaでは型定義はしっかりしましょうというお話です。 先日、私の本職の方でJavaを使用したシステム開発でちょっとした問題が起こりました。 単体テストでは動作していたプログラムが、結合テストでは動作しなくなる問題です。 上記自体はあ…

【Java】ExceptionのStackTraceをStringとして扱う

Javaで例外が発生した時、そのトレース内容を文字列として保持したい時に使用可能なメソッドを作ってみました。 public String getStackTrace(Exception e) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTra…

【アーシの原点】

【頭を鍛える迷路集】


スポンサードリンク