java - JDBI3 返回参数化类
问题描述
我有一个抽象的 EntryPoint 类,如下所示:
public abstract class EntryPoint<T extends Tag> implements Serializable {
public EntryPoint(){}
protected ArrayList<T> tiedTags;
public abstract ArrayList<T> getTiedTags();
public abstract void setTiedTags(List<T> tiedTags);
}
然后我有这个 EntryPoint 类的子类,每个子类只接受一种标签。例如,一个 SNMPEntryPoint 只存储 SNMPTags。子类提供抽象方法的实现:
public class SNMPEntryPoint extends EntryPoint<SNMPTag> implements Serializable {
//Default Constructor for Serialization
public SNMPEntryPoint(){}
@Override
public ArrayList<SNMPTag> getTiedTags(){ return tiedTags; }
//etc
}
有没有办法创建一个返回参数化类列表的 JDBI 查询?目前,这就是我正在做的事情:
public List<SNMPEntryPoint> getSNMPEntryPoints(){
try(Handle handle = daoFactory.getDataSourceController().open()) {
return handle.createQuery("SELECT * FROM dbo.EntryPoints WHERE Active = 1 AND SiteID = :sID AND Protocol = 'SNMP'")
.mapToBean(SNMPEntryPoint.class)
.list();
}
catch(Exception e){
if(sysconfig.getVerbose()){ e.printStackTrace(); }
}
return null;
}
但这感觉像是对课程的原始使用。所以我想我的问题是,如果我使用此代码生成 SNMPEntryPoints,然后在这些 EntryPoints 上调用 getTiedTags 或 setTiedTags,那会起作用吗?我是否通过以这种方式创建我的 SNMPEntryPoint 对象来打破任何编码约定?
解决方案
只是想关闭它。我的课程实际上没有参数化。正如您在上面看到的,它们扩展了参数化抽象类,但是 SNMPEntryPoint 实际上并不接受任何参数,因此无需做与我上面所做的不同的任何事情。
推荐阅读
- c# - InvalidOperationException:未指定密钥类型。Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ConfigureSigningCredentials.LoadKey()
- powershell - 如何在 PowerShell 中将字符串作为批处理脚本执行
- php - 检测路线中的故障点
- python - Python 如何处理具有混合类型的排序字典键,为什么?
- javascript - 变量一直未定义
- regex - 包括 'Somestring' 但不包括那些包含 'Otherstring'
- c++ - 在 C++ 中键入安全的数字常量
- javascript - 如何使用 React 更改元素的 innerHTML?
- c++ - C++ Winsocks,recv(socket,512,0) 一次只接收一个字符
- python - 为什么这两个代码的运行时间不同?