4

これはコードです:

public class Triangle {


private String color;
private int height;


public Triangle(String color,int height){
    this.color = color;
    this.height = height;
}

public Triangle(int height ,String color){
    this.color = color;
    this.height = height;
}

public void draw() {
    System.out.println("Triangle is drawn , +
            "color:"+color+" ,height:"+height);
}

}

Spring 構成ファイルは次のとおりです。

 <bean id="triangle" class="org.tester.Triangle">
    <constructor-arg value="20" />
    <constructor-arg value="10" />
</bean>

Spring によって呼び出されるコンストラクターを決定する特定のルールはありますか?

4

3 に答える 3

3

ここでは、最初の引数が各メソッドの最初のパラメーターに一致し、次にパラメーターが一致します。

あいまいさを取り除くのに役立つ以下の解決策をお勧めします

最初のコンストラクターを呼び出したい場合は、

<bean id="triangle" class="org.tester.Triangle">
<constructor-arg type="int"  value="20" />
<constructor-arg type="java.lang.String"  value="10" />
</bean>

2 番目のコンストラクターを呼び出したい場合は、

<bean id="triangle" class="org.tester.Triangle">
    <constructor-arg type="java.lang.String"value="20" />
    <constructor-arg   type="int"  value="10" />
</bean>

それで曖昧さが解消される

編集 :-

この問題の詳細については、こちらをご覧ください

于 2012-12-13T17:11:52.070 に答える
0

私はそうは思いません。引数を入力できることに注意してください。

<bean id="triangle" class="org.tester.Triangle">
    <constructor-arg type="int" value="20" />
    <constructor-arg value="10" />
</bean>

これにより、このシナリオでの混乱が解消されます。

于 2012-12-13T17:10:08.497 に答える
0

Spring 3.1.0 のテストに基づいて、2 番目のコンストラクターが使用されます。理由はわかりませんが、ドキュメントには決定的な答えがありませんでした。

Bitbucket コードテストするには、Main クラスを実行します。Triangle オブジェクトの作成に使用されるコンストラクターに応じて、文字列 FIRST または SECOND が出力されます。

于 2012-12-13T23:04:45.840 に答える