無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

インジェクションのやり方いろいろ

Guiceでは以下のインジェクション方式がサポートされています。

フィールドインジェクション(Mii.java):

import com.google.inject.Inject;

class Mii {
	
    // フィールドインジェクション
    @Inject private String name;
    @Inject private int age;

    public void meow () {
        System.out.println( name + " : " + String.valueOf( age ) );
    }
}

コンストラクタインジェクション(Kuro.java):

import com.google.inject.Inject;

class Kuro {
    String name;
    int age;

    // コンストラクタインジェクション
    @Inject private Kuro( String name, int age ) {
        this.name = name;
        this.age = age;
    }

    public void meow () {
        System.out.println( name + " : " + String.valueOf( age ) );
    }
}

セッターインジェクション(Shiro.java):

import com.google.inject.Inject;

class Shiro {

    String name;
    int age;

    // セッターインジェクション
    @Inject  private void setName( String name ) {
        this.name = name;
    }
    @Inject  private void setAge( int age ) {
        this.age = age;
    }

    public void meow () {
        System.out.println( name + " : " + String.valueOf( age ) );
    }
}

任意のメソッドインジェクション(Tora.java):

class Tora {

    String name;
    int age;

    // 任意のメソッドインジェクション
    @Inject  private String update( String name, int age ) {
        this.name = name;
        this.age = age;
        return "hogehoge";
    }
    public void meow () {
        System.out.println( name + " : " + String.valueOf( age ) );
    }
}

メイン:

Injector injector = Guice.createInjector( new AbstractModule() {
    @Override
    protected void configure () {
        // toInstanceでインスタンスを直接登録できる。
        bind( String.class ).toInstance( "名前はまだない" );
        bind( Integer.TYPE ).toInstance( 2 );
    }
});

injector.getInstance(Mii.class).meow();
injector.getInstance(Kuro.class).meow();
injector.getInstance(Shiro.class).meow();
injector.getInstance(Tora.class).meow();

出力:

名前はまだない : 2
名前はまだない : 2
名前はまだない : 2
名前はまだない : 2

フィールドやコンストラクタprivateでもOKです。(java.beansAPIは使っていない様子。→InjectorImpl)