1

私はこのような方法を持っています:

public boolean isDocumentsDeletedFormDB(String strDocumentsID) {
}

Integerこのメソッドでは、1つの値も返したいと思いました。として戻り型がすでにあるのでBoolean、どうすればInteger値も返すことができますか。

合意としてラッパーIntegerを渡すことも私の問題を解決していません。

Collectionリターンタイプを使用せずに解決策を提案できる人はいますか?

4

8 に答える 8

4

まず、あなたの方法には問題があると言わざるを得ません。メソッドは 1 つのことだけを行う必要があり、メソッドは 2 つのことを行います (返す必要がある 2 つの値を計算します)。適切な解決策は、これらの値の 1 つを返す目的を持つ別のメソッドを作成し、もう 1 つを元のメソッドによって返すことです。

とにかく、本当にこれを行う必要がある場合は、いくつかのオプションがあります。

  1. 両方の値をプライベート フィールドとして含むラッパー クラスを作成し、メソッドからこの新しいクラスの値を返します。
  2. 返されたオブジェクトの 1 つを、他の必要なメソッドによって読み取られるフィールド変数として抽出します (プライベート メソッドでのみ必要な場合)。
  3. 返された型のいずれかがエラー ステータスの場合は、例外を使用します。
于 2012-10-01T06:06:35.177 に答える
1

複数の要素を返す標準的な方法は、それらの要素をカプセル化したオブジェクトを返すことです。

例えば:

public static class DeletedFromDBReturn {
  public final int integerValue;
  public final bool booleanValue;

  private DeletedFromDBReturn(int i, bool b) {
    integerValue = i; booleanValue = b;
  }
}

DeletedFromDBReturn sDocumentsDeletedFormDB(String strDocumentsID) {
  // ...
  return new DeletedFromDBReturn(intVal, boolVal);
}
于 2012-10-01T06:05:33.570 に答える
0

Java の関数から複数の値を返すことはできません。2 つの値を含めるには、コレクション、クラス、または構造体のいずれかを使用する必要があります。

于 2012-10-01T06:03:17.053 に答える
0

Booleanandフィールドを持つオブジェクトを定義してIntegerそのオブジェクトを返すか、外部ライブラリを使用できる場合は、Pair<L,R>Apache Commons が提供するクラスを参照する必要があります。

于 2012-10-01T06:03:22.197 に答える
0

Plain Old Java Object (POJO) クラスを作成し、そのインスタンスを返します。POJO クラスは次のようになります。

public class MyPOJO{
    private boolean booleanValue;
    private Integer integerValue;


    public void setBooleanValue(boolean booleanValue){
        this.booleanValue = booleanValue
    }

    public void setIntegerValue(Integer integerValue){
        this.integerValue = integerValue
    }

    public boolean getBooleanValue(){
        return this.booleanValue;
    }

    public Integer getIntegerValue(){
        return this.integerValue;
    }
}

メソッドのシグネチャを変更して、次のようにする必要があります。

public MyPOJO isDocumentsDeletedFormDB(String strDocumentsID){
    /*
    * Your logic
    */

    MyPOJO pojo = new MyPOJO();
    pojo.setIntegerValue(/* Your integer value */);
    pojo.setBooleanValue(/* Your boolean value */);

    return pojo;
}
于 2012-10-01T06:04:22.480 に答える
0

一般的な Pair<First,Second> クラスを記述して、Pair<Boolean,Integer> を返すことができます。ただし、私見では、 isSomething() という名前のメソッドがブール値を返すだけであると誰もが期待しているため、メソッド名も変更することを検討する必要があります。

于 2012-10-01T06:05:10.513 に答える
0

できることは、戻り値の型を に変更することですint。それ以外-1の場合はリターンfalseValid integer.

booleanメソッド名から、戻り値の型を使用してドキュメントが削除されているかどうかを確認していると推測できます。そして、Integerあなたは戻りたいですnumber of documents deleted

 public int isDocumentsDeletedFormDB(String strDocumentsID) {}

したがって、この関数を次のように使用する関数をチェックインできます

   if(isDocumentsDeletedFormDB(str)==-1)
    //Do that you do when it is false.
于 2012-10-01T06:07:20.197 に答える
0

その場合、単純な String を使用することをお勧めします。これは、両方の型を返すことができますが、String 形式です。呼び出しコードで、それが (「true」または「false」) かどうかを確認し、それに応じて解析します。

于 2012-10-01T06:10:25.127 に答える