ロジニキ雑記

マイクラ、プログラミング等雑記

プログラミング

コンストラクタ内での引数バリデーションやアクセス制御を諦めた話

概要 Javaではインスタンスを生成する際に、不正なオブジェクトの生成を防ぐためにコンストラクタで引数のバリデーションをしたりアクセス制御を行ったりします。しかしコンストラクタの定義には制約が多く、ロジックを表現出来る幅が大変限られてしまいます…

Javaによる型制約を持ったインスタンスメソッドの模倣

概要 Javaではレシーバーが特定のParameterized Typeである時のみ呼び出す事が出来るインスタンスメソッドを定義するという言語機能はありません。しかし、Parameterized Typeを引数に取る関数を外部で定義し、ジェネリック型には外部から渡された関数を自身…

Iterableを直接実装しない

概要 コレクションにIterableを実装させる事で、そのコレクションのインスタンスを拡張for文の対象にでき、簡単にイテレート出来るようになります。しかし、IterableではIteratorを返すメソッドを1つしか定義出来ないため、拡張for文によるコレクションの走…

GradleでGitHub Packagesを利用しようとしてハマった話

何があったの? Gradleを利用して自作したJavaライブラリをGitHub Packagesを使って公開しようとした所いくつか罠にはまりました。今回はハマってしまった罠とその対処法を紹介します。今回の問題にあたってGitHubさんのサポートを利用しましたがGitHubさん…

Luaでオブジェクト指向1

最近OpenComputersと言うMinecraftのModを使うためにLuaというプログラミング言語を勉強しています。Luaは高速なスクリプト言語で、ゲームで使われることが多い?らしいです。動画投稿者の方はAviUtilなんかで使った事があるかもしれません。今回はそのLua言…