在我当前的项目中,我正在使用org.postgresql.PGNotification从postgres获取通知。用法如下:PGNotification notifications [] = pgconn.getNotifications();

但是最近我才意识到PGNotification不是一个类而是一个接口!如果我想序列化PGNotification,我该怎么做?在IDE中,它会自动生成以下代码,而这些代码很可能无法正常工作。

本质上,就是我不了解如何像上面那样使用接口。有人可以向我解释吗?

谢谢!

public class SerializableNotification implements Serializable, PGNotification{

    /**
     *
     */
    private static final long serialVersionUID = -1601340490113080932L;

    public String getName() {
        // TODO Auto-generated method stub
        return null;
    }

    public int getPID() {
        // TODO Auto-generated method stub
        return 0;
    }

    public String getParameter() {
        // TODO Auto-generated method stub
        return null;
    }

}

最佳答案

您可能需要将PGNotification对象转换为SerializableNotification对象。
像这样:

PGNotification[] notifications = pgconn.getNotifications();
SerializableNotification[] serializableNotifications = new SerializableNotification[notifications.length];
for(int i = 0; i < notifications.length; i++) {
   PGNotification notif = notifications[i];
   serializableNotifications[i] = new SerializableNotification(notif.getName(), notif.getPID, notif.getParameter());
}


鉴于SerializableNotification是您拥有的代码,您可以简单地创建一个构造函数以接收namePIDParameter

07-28 13:51