2016-11-27 12 views
0

編集:問題を簡単に簡略化しようとしていましたが、代わりに混乱が生じました。実際のところは次のとおりです。Genericクラス型を使用したDynamoDBQueryExpressionのインスタンス化

DynamoDB用のAWSのJava SDKを使用しています。 DynamoDBMapperクラスを使用して、特定のテーブルからアイテムを取得するためにDynamoDBを照会しようとしています。私はDynamoDBテーブルにマップするいくつかのオブジェクトを持っており、マップされたオブジェクトを受け入れ、テーブルを照会し、アイテムの結果を返す汎用メソッドを持つことを望んでいました。

Psudoコード:

@DynamoDBTable(tableName="testTable") 
public class DBObject { 

    private String hashKey; 
    private String attribute1; 

    @DynamoDBHashKey(attributeName="hashKey") 
    public String getHashKey() { return this.hashKey; } 
    public void setHashKey(String hashKey) 

    @DynamoDBAttribute(attributeName="attribute1") 
    public String getAttribute1() { return this.attribute1; } 
    public void setAttribute1(String attribute1) { this.attribute1 = attribute1; } 
} 

public class DatabaseRetrieval { 

    public DatabaseRetrieval() 
    { 
     DBObject dbObject = new DBObject(); 
     dbObject.setHashKey = "12345"; 

     DBRetrievalAgent agent = new DBRetrievalAgent; 
     dbObject = agent.retrieveDBObject(dbObject.getClass(), dbObject); 
    } 
} 

public class DBRetrievalAgent { 

    public Object retrieveDBObject(Class<?> classType, Object dbObject) 
    { 
     DynamoDBQueryExpression<classType> temp = new DynamoDBQueryExpression<classType>().withHashKeyValues(dbObject); 

     return this.dynamoDBMapper.query(classType, temp); 
    } 
} 
+4

あなたはそのリストとそのクラスで正確に何をしますか?あなたはクラスを与えられただけで、どのようにそれを設定しますか?クラスはどのような情報を提供していますか?あなたは単に 'new ArrayList 'を使うことができます。 –

+0

コメントで説明しないでください。代わりに質問を編集してください。 –

答えて

0

あなたはそれは一般的な作るためにあなたgetResult()ためTようなタイプを指定することができ、以下のように(すなわち、任意のクラスを受け入れます):

public <T> String getResult(T t) { 
     String result = ""; 
     List<T> newList = new ArrayList<>(); 

     // perform actions 

     return result; 
    } 
0

てみてくださいこの

ArrayList<T> newList = new ArrayList<>(); 
+0

なぜ「これを試してみる」べきか説明できますか? – Tunaki

1

使用Aあなたの方法で証人をタイプしてください:

public <T> String getResult(Class<T> type) { 
    List<T> newList = new ArrayList<>(); 
    //other code 
} 
関連する問題