Java

インスタンスメソッドのアクセス制限1

Rubyでは、オブジェクトのメンバに対するアクセス制御としてpublic、protected、privateを指定できる。Javaと同じキーワードであるが、protected、privateメソッドの挙動はJavaとはかなり違うので要注意だ。Java public どこからでも protected 同一パッケー…

Rubyのクラス定義

Rubyでは、 クラスはclassキーワードで定義 インスタンスメソッドはクラス内でdefキーワードを使って定義 新規インスタンスはクラスメソッドnewで作成 newメソッドを定義する必要はない コンストラクタは定義できないが、代わりにinitializeメソッドがnew実…

Javaのメソッドで引数にnullを指定した場合のオーバーロードメソッドの解決

オーバーロードメソッドの引数にnullを直接指定するとメソッドを解決できる場合とできない場合がある。このような継承関係のクラスがあるとき、 class HogeA {} class HogeB extends HogeA {} class HogeC extends HogeA {} public class Test1 { public sta…

クラスがどのクラスパスから取得されたか調べる

Hogeクラスがどこからロードされたか調べるには、 Hoge.class.getProtectionDomain().getCodeSource().getLocation();上記コードで、クラスをロードしたクラスパスの入ったURLオブジェクトが取得できる。StringなどのコアライブラリはgetCodeSourceがnullを…

RubyとJavaのsuperの違い

RubyとJavaではsuperの意味が異なっている。Javaではスーパークラスをレシーバとするためのキーワードであり、Rubyでは現在のメソッドがオーバーライドしているメソッドの呼び出しになる。 class Oya { void a(){ System.out.println("oya"); } } class Ko e…