2

我需要将此方法与三个不同的类一起使用:订单、客户、供应商

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 else if 解决方案:

if(instanceof Orders).... else if(instanceof Customers)..... else if(instanceof Suppliers)....

现在我需要一个通用的解决方案,我该怎么做?

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 回答