2

このメソッドは、注文、顧客、サプライヤーの3つの異なるクラスで使用する必要があります。

public void saveObjectKey(String filename, Long start) {
    Query<Orders> query = datastore.createQuery(Orders.class)
            .field("O_ORDERKEY").greaterThan(start);
    for (Orders orders : query.fetch()) {
        Util.writeFile(orders.getPrimaryKey().toString(), filename);
    }
}

私は醜い解決策を考えていました。

if(instanceof Orders).... else if(instanceof Customers)..... else if(instanceofSuppliers)...。

今、私は一般的な解決策が必要です、どうすればそれを行うことができますか?

4

1 に答える 1

4

これはあなたのアプリケーションで意味がありますか?

public <T> void saveObjectKey(String filename, Long start, Class<T> clazz, String keyName) {
    Query<T> query = datastore.createQuery(clazz).field(keyName).greaterThan(start);
    for (T o : query.fetch()) {
        Util.writeFile(o.getPrimaryKey().toString(), filename);
    }
}

次に、次のように使用できます。

saveObjectKey(filename, start, Customers.class, customersKeyName);
saveObjectKey(filename, start, Suppliers.class, suppliersKeyName);
saveObjectKey(filename, start, Orders.class, ordersKeyName);
于 2012-06-17T22:47:26.610 に答える