jdbi3返回参数化类

ubbxdtey  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(278)

我有一个抽象的入口点类,如下所示:

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只存储snmptag。子类提供抽象方法的实现:

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,然后在这些入口点上调用gettiedtags或settiedtags,这行得通吗?用这种方式创建snmpentrypoint对象是否违反了任何编码约定?

gxwragnw

gxwragnw1#

只是想结束这一切。我的类实际上没有参数化。正如您在上面看到的,它们扩展了参数化的抽象类,但是snmpentrypoint实际上不接受任何参数,因此不需要做任何与我在上面所做的不同的事情。
但是,如果您确实需要从jdbi返回一个参数化的泛型,您可以使用这里的详细信息来完成。

相关问题