【发布时间】:2018-11-27 15:26:57
【问题描述】:
我正在尝试将重复的代码移动到父类中,但此类代码使用特定类的“详细信息”。
重复代码示例
客户端.java
class Client extends SugarRecord {
private String uuid; // name, etc
public static Client findByUuid(String uuid){ // null check
List<Client> clients = find(Client.class, "uuid = ?", uuid);
return clients.get(0); // simplified, but checks for empty list and ret. null
}
}
Foo.java
class Foo extends SugarRecord {
private String uuid; // bar, etc
public static Foo findByUuid(String uuid){ // null check
List<Foo> foos = find(Foo.class, "uuid = ?", uuid);
return foos.get(0); // simplified, but checks for empty list and ret. null
}
}
注意:SugarRecord 来自 SugarORM。
如您所见,这是重复的,只会更改 Something.class。这也可以应用于其他事物,例如findAll()。
预期方式
我的意图是这样使用它:
Client client = Client.findByUuid("abc");
问题
当我尝试将代码移动到父类中时,我不知道如何解析泛型类型并使其以所需的方式可调用。例如,我可以在父类中声明一个方法:
公共类 MyBaseClass 扩展 SugarRecord{ 公共静态 T findByUuid(类 c,字符串 uuid){ 列表结果 = find(c, "uuid = ?", uuid); 返回结果.get(0); } }
这样称呼它:
Client cli = Client.findByUuid(Client.class, "something");
但我想省略 Something.class。
有没有办法做到这一点?
【问题讨论】:
标签: java android generics inheritance sugarorm