如何创建一个接受未知类类型并返回正确对象的辅助方法

时间:2016-03-27 15:23:24

标签: java ormlite

我为ORMLITE创建了以下代码行来创建dao(数据访问对象)。我试图通过为不同的数据库表/实体编写相同的语句来避免重复所有实体。

Uri uri = new Uri("http://ip:8000/PokusWPF/CalculatorService");
            var address = new EndpointAddress(uri);
            var client = new CalculatorClient();
            client.Endpoint.Address = address;
            client.Open();

如何创建一个接受我拥有的任何实体并返回正确的entityDao对象的方法。

这样我就可以结合逻辑

Dao<Entity, String> entityDao = DaoManager.createDao(connectionSource,Entity.class);

Dao<UserEntity, String> userEntityDao = DaoManager.createDao(connectionSource,UserEntity.class);

我尝试过以下方法:

Dao<AccountEntity, String> accountEntityDao = DaoManager.createDao(connectionSource,AccountEntity.class);

但不幸的是我收到了以下错误:

  private Dao<?, String> createDAO(Class<?> dataClass) throws SQLException{
        // instantiate the dao
        return DaoManager.createDao(connectionSource, dataClass);
    }

1 个答案:

答案 0 :(得分:1)

您需要在T方法中添加泛型类型参数createDAO

private <T> Dao<T, String> createDAO(Class<T> dataClass) throws SQLException {
    return DaoManager.createDao(connectionSource, dataClass);
}

如果你看一下DaoManager.createDao的定义,你会发现它是以类似的,虽然更复杂的方式定义的:

public static <D extends Dao<T,?>,T> D createDao(ConnectionSource connectionSource,
                                                 Class<T> clazz) throws SQLException