query: tag:JRHG

RubyObjectクラスのコンストラクタ

RubyObjectクラスのコンストラクタは次のようになっています。

java>>
private RubyObject(){};

public RubyObject(Ruby runtime, RubyClass metaClass) {
    this.metaClass = metaClass;
    
    if (runtime.isObjectSpaceEnabled()) addToObjectSpace(runtime);
    if (runtime.getSafeLevel() >= 3) taint(runtime);
}

protected RubyObject(Ruby runtime, RubyClass metaClass, boolean useObjectSpace) {
    this.metaClass = metaClass;
    
    if (useObjectSpace) addToObjectSpace(runtime);
    if (runtime.getSafeLevel() >= 3) taint(runtime);
}

<<java

RubyObjectクラスのコンスラクタは、Rubyの実行環境であるruntime、作成されるRubyObjectインスタンスのメタクラス、そしてObjectSpaceクラスを有効にするかどうかのフラグを引数としています。

ObjectSpaceクラスは、Rubyの全てのインスタンスへの参照を持ちます。Javaでこうした機構を持つことは、非常にコストの高い選択になってしまうため、JRubyのデフォルトではオフになっています。

metaClass変数には、オブジェクトのメタクラスが入ります。メタクラスはRubyClassクラスのインスタンスです。そして、RubyClassクラスは、RubyModuleクラスを親クラスに持ちます。もちろん、そのRubyModuleクラスの親クラスは、RubyObjectクラスです。

また、デフォルトコンストラクタがプライベートになっています。これは、NEVERとUNDEFという特殊な定数のために使われています。NEVERは、配列の最後に配置される「番人」として利用されるとJavaDocに書かれていますが、どうやら必ずしもそうというわけではないようです。

posted by takai takai on Tue 28 Oct 2008 at 23:37 with 0 comments

JRubyオブジェクトの構造

指針

JRubyのソースコードを読むにあたって、オブジェクトから始めます。これは、『Rubyソースコード完全解説』を真似してのことで、特に深い意図はありません。この章では、JRubyのオブジェクトについて、次の順番で見ていくことにしましょう。これも、真似ですね。

  • アイデンティティ
  • メソッド
  • インスタンス変数

アイデンティティ

Meyerの『オブジェクト指向入門第2版』によると、オブジェクトとは「単に何らかのクラスのインスタンスである(邦訳P212)」と身も蓋もないことが書かれていました。その表現に倣うなら、JRubyのオブジェクトとは、「単なるRubyObjectクラス(とその子クラス)のインスタンス」です。

posted by takai takai on Mon 27 Oct 2008 at 06:19 with 0 comments
Contents rssrss
Leading Smart TV App Development Companies | USA | 4 Way Technologies
Apple TV Developer | TVOS Development | USA | 4 Way Technologies
光ファイバーを二次元振動させて走査するAR用ディスプレイ
因果の取り違え
Value Transformer
Swift2's defer for CoffeeScript
mongodb-3.0からcreateIndexのdropDupsが無くなったらしい
mongodb-3.0以降のWiredTigerの設定を動的に変更する方法
一般楕円の高速生成アルゴリズムへの道標
farro mantecatoのレシピ
Tags
JRHG
Comments rssrss
https://sibgrp.ir https://sibgrp.ir: به شکل خلاصه برای اون دسته که بازی‌های آنلای... 05/02 23:21
http://buy-backlinks.rozblog.com/ http://buy-backlinks.rozblog.com/: I blog often and I genuinely appreciate your con... 05/02 23:07
https://example.com/xtorqho https://example.com/xtorqho: whoah this weblog is excellent i like studying you... 05/02 21:28
https://master-vodoved.ru/nastennye-gazovye-kotly-otopleniya/page/2 https://master-vodoved.ru/nastennye-gazovye-kotly-otopleniya/page/2: Смонтированные системы и выполненные работы: В сме... 05/02 18:00
https://www.dokuclinic.com/sac-ekimi https://www.dokuclinic.com/sac-ekimi: We stumbled over here from a different page and th... 05/02 12:14
https://xn--krken21-bn4c.com https://xn--krken21-bn4c.com: Как отличить поддельный Kraken: типичные ошибки ве... 05/02 00:52
https://u2vyzx.lomza.pl https://u2vyzx.lomza.pl: در جمع‌بندی کلی برای کسایی که دنبال پیش‌بینی... 05/01 17:52
https://xn--krken21-bn4c.com https://xn--krken21-bn4c.com: Как отличить настоящий маркетплейс от подделки Kra... 05/01 12:20