2017-01-11 3 views
0

カスタムヘッダーを持つ値のように、アイテムごとに2つの値を持つ配列を作成しようとしています.JavaでRubyを使用しているため、正しい方法を見つけることができません。アイテムあたり2つの値を持つ配列

これは、私が自動化する必要があるREST保証テスト用です。私は疑うこのような

private String[] getHeaders() { 
    String[] obj = [ 
      'Signature' => this.getSignature(), 
      'Timestamp' => this.getTimestamp(), 
      ]; 

     if(getSessionToken() != null) { 
      obj.sessionToken = this.getSessionToken(); 
     } 
    } 
} 
+8

気になる2つの値を持つカスタムタイプを作成します。その型の配列を作成します。 – azurefrog

+2

必要なものを表す別のモデルクラスを作成することができ、その内部に2つのフィールド、署名、タイムスタンプがあります。次に、そのクラスの配列を宣言します。 'MyClass [] objects =新しいMyClass [10];'。 – Vucko

+0

@azurefrogが私の前でちょっと言ったこと:D – Vucko

答えて

3

これは、モデルを作成することで実現できます。例:

public class MyModel { 
    private String signature; 
    private String timestamp; 

    public MyModel() { 
     // constructor 
    } 

    public MyModel(String signature, String timestamp){ 
     this.signature = signature; 
     this.timestamp = timestamp; 
    } 

    public String getSignature() { 
     return signature; 
    } 

    public void setSignature(String signature) { 
     this.signature = signature; 
    } 

    public String getTimestamp() { 
     return timestamp; 
    } 

    public void setTimestamp(String timestamp) { 
     this.timestamp = timestamp; 
    } 
} 

次に、モデルの配列を作成します。

private static final int MODEL_SIZE = 5; 
private MyModel[] models = new MyModel[MODEL_SIZE]; 

ご使用のアレイのサイズがわかっている場合は、次のように使用してください。モデルを作成せずにHashMapを使用していることを達成するために

private ArrayList<MyModel> models = new ArrayList<>; 
private MyModel model; 

// Then fill your models 

// by using this way 
model = new MyModel("My Signature", "My Timestamp"); 
models.add(model); 

// or this way 
model = new MyModel(); 
model.setSignature("My Signature"); 
model.setTimestamp("My Timestamp"); 
models.add(model); 

別の方法:それとも、あなたはまだ、配列のサイズがわからない場合は、以下のこのアプローチを使用することができます。例:

List<HashMap<String, String>> objects = new ArrayList<>(); 

HashMap<String, String> object = new HashMap<>(); 
object.put("signature", "My Signature"); 
object.put("timestamp", "My Timestamp"); 

objects.add(object); 
+0

このライン \tで複数のマーカー、私はそれを行うにはHashMapの道を好きですが、Imは、エラーを取得 - \t LocalVariableDeclaration \t完了するために、「VariableDeclarators」を挿入し、構文エラー - 構文エラーを挿入「;」ブロックステートメントを完了するために \t - HashMapの型引数を推論できません。<> –

+0

私はそれらを解決しました。それは私のところで定義エラーでした、ありがとう! –

1

何かがある:

これは私がする必要がある方法ですが、私はルビー、それを実行する方法なので、必要それがより明確だのいくつかの並べ替えとOBJの宣言を混ぜますあなたが欲しいもの。

class Headers{ 
     public String signature; 
     public String timeStamp; 
    } 
    Headers[] header = new Headers[10]; 

おそらくゲッタとセッタは必要ありませんが、それらを投げ入れることもできます。

関連する問題