今日の学び(2024/08/22)

🗒 今日の学び

Javaのinner classのstaticは普通のstaticと少し毛色が違う?という話

実装時によくわからんとなったので、社内の有識者に教えてもらった。

hosochin.com

理解はできたけど地味に気持ち悪い感じがしてて、

public class A {

  public class InnerA {
    // do something...
    // ここからはprivateなAのメンバーにアクセスできる
  }

}

という感じのクラスがあって、こいつの中にあるInnerAをこのまま呼ぶには、

A a = new A();
InnerA ina = a.new InnerA();

というあんま見たこともない呼び方をしないといけない。

これを回避するにはstaticをつけてあげるとよいのだが、そうすると、

public class A {

  public static class InnerA {
    // do something...
    // ここからはprivateなAのメンバーにアクセスできる
  }

}
A a = new A();
InnerA ina = new InnerA();

と呼べるのだが、普通に考えると「????????」って感じで「なぜ君はstaticなのにnewできるんだい・・・」ということになる。

どうも理屈としては、staticがついたinner classというのは親クラスが保存されているパッケージにある別ファイルに書かれたクラスと同じ扱いになるらしい。

「なるほど」と腑には落ちたものの、使いどきがいまいちよくわかない・・

privateなinner classの存在意義はわかるが。

🐸 ふりかえり

副業で任せていただいていた新しいマイクロサービスの実装がようやくひと段落した。

ここから先、インフラを作っていくという作業が待ってはいるものの、半年くらいかけて作ったのでひとまず喜びもひとしお。

(月の稼働は平均25時間くらいなので、1人月かからないくらいだった)

技術選定からはじめて、ひとおおりプロダクトとして作り上げるのは何気に初めてだったので、本当に良い体験をさせていただいたと思う。

引き続きインフラ構築でも本業では得難い学びを得つつ、よい成果を出せるようにしていきたい。

🚀 おわりに

明日は仕事が無事に終わればラストマイルを見にいく予定。

📢 Kobe.tsというTypeScript勉強会を主催しています

kobets.connpass.com

TypeScript(フロント・バック)関係に限らず、Figma、npm、Linterなど周辺技術まで幅広く勉強していく会です。

盛り上がってる感を出していきたいので、メンバーになるだけでも押していただけますと🙏