Java 不是抽象的,并且不重写hbase中TableCallback中的抽象方法doInTable(HTableInterface)
我最近将hbase版本从1.2.2.5.3.0-37更改为2.2.3.7.1.4.0-203。有一个代码段是hbase 1.2版的旧代码Java 不是抽象的,并且不重写hbase中TableCallback中的抽象方法doInTable(HTableInterface),java,eclipse,spring-boot,hbase,Java,Eclipse,Spring Boot,Hbase,我最近将hbase版本从1.2.2.5.3.0-37更改为2.2.3.7.1.4.0-203。有一个代码段是hbase 1.2版的旧代码 public List<UserRole> updateUserRoles(final List<UserRole> userRole){ return hbaseTemplate.execute(AUTH_TABLE_NAME, new TableCallback<List<UserRole>>
public List<UserRole> updateUserRoles(final List<UserRole> userRole){
return hbaseTemplate.execute(AUTH_TABLE_NAME, new TableCallback<List<UserRole>>() {
public List<UserRole> doInTable(HTableInterface table) throws Throwable {
List<Put> inputBatch = createInputBatch(userRoles);
table.put(inputBatch);
return userRoles;
}
});
}
从现在起,HTableInterface已被弃用。所以我在新代码中使用了表,如下所示
public List<UserRole> updateUserRoles(final List<UserRole> userRole){
return hbaseTemplate.execute(AUTH_TABLE_NAME, new TableCallback<List<UserRole>>() {
public List<UserRole> doInTable(Table table) throws Throwable {
List<Put> inputBatch = createInputBatch(userRoles);
table.put(inputBatch);
return userRoles;
}
});
}
但现在我得到的错误是,它不是抽象的,并且不会覆盖hbase中TableCallback中的抽象方法doInTableHTableInterface,它属于以下两行:
hbaseTemplate.execute(AUTH_TABLE_NAME, new TableCallback<List<UserRole>>() {
public List<UserRole> doInTable(Table table) throws Throwable".)
非常感谢您的帮助。请提前感谢您尝试重写/实现类TableCallback中的方法doInTable。但这在更新的API中不再存在。看来您正在使用一些不应该再使用的东西 不是抽象的,并且不重写抽象方法 hbase中TableCallback中的DoIntableTableInterface 这意味着在您实现的接口中,有一个
public List<UserRole> doInTable(HTableInterface hTableInterface);
方法
您所做的是在实现中将该变量的类型从HTableInterface更改为Table,这不匹配,从而导致您的问题
您正在实现的接口仍然使用另一个类,这可能是因为您没有很好地更新所有库,或者无法使用该新版本
这样,检查是否有另一个更新版本的接口,并实现它,或者您可以考虑回滚到旧版本。
那么,我可以用什么来代替那个?实际上,新的方法似乎被添加到接口中,他没有实施。你能帮我知道我需要实施哪种方法吗。我对这一点不熟悉: