java - 子类抛出 UnsupportedOperationException 与忽略输入参数

标签 java inheritance jdbc subclass liskov-substitution-principle

假设我有一个如下的类,正如类名所示,该类不允许自动提交。

所以我的问题是,是否最好将其保留如下(空主体,也许添加一些日志记录 @WARN/ERROR 级别)或抛出 UnsupportedOperationException?

public class NoAutoCommitConnection implements java.sql.Connection {
    public void setAutoCommit(boolean autoCommit) throws SQLException {
    }
}

最佳答案

我实际上会选择 if(autoCommit) { throw new UnsupportedOperationException(); } ,因为它清楚地表明不支持自动提交,但不会失败 setAutoCommit(false)来电。

不实现该方法,或者更确切地说,它的意图违反了接口(interface)的契约。

我认为在这种情况下你至少可以做的是在运行时抛出异常。

关于java - 子类抛出 UnsupportedOperationException 与忽略输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58566094/

相关文章:

java - 如何在没有 SELECT 的情况下调用 postgres 中的函数?

java - 解析JSON文件(JAVA)

c++ - "Override"构造函数并调用祖 parent 构造函数

java - JDBC Oracle 属性文件

c++ - 无法转换 'this' 指针...继承

c# - 条件继承 : base class depend on environment variable

sql-server - 在 pyspark 查询中使用临时表

Java流迭代列表最有效的方法

java - UI性能:repeat in JSF2/Mojara

java - 如何使用传递给方法的参数为 catch 语句设置预期的异常类型?