小编Bru*_*tto的帖子

Objects.requireNonNull(T obj)而不是null检查并手动抛出IllegalArgumentException?

每当我必须检查方法的给定参数是否为空时,我曾经写过一个空检查并抛出一个IllegalArgumentException如果null检查失败:

    if (user == null) {
        throw new IllegalArgumentException("User can't be null.");
    }
Run Code Online (Sandbox Code Playgroud)

但是,通过阅读某些Java 8类的源代码ArrayList,我发现Oracle正在使用Objects.requireNonNull针对空值检查参数,然后,如果测试失败,NullPointerException则抛出a.

这样,早期的代码片段应该采用这种方法:

Objects.requireNonNull(user, "User can't be null.");
Run Code Online (Sandbox Code Playgroud)

更小,更易读.

假设我已经控制了系统的整个异常处理,(即使我不应该,有时它是业务的一部分来处理这些未经检查的异常),我应该替换我IllegalArgumentExceptionNullPointerException并使用Objects.requireNonNull而不是编写我自己的null检查抛出异常?

java exception-handling exception java-8

17
推荐指数
2
解决办法
4642
查看次数

使用StringBuilder覆盖常见POJO的toString()时,避免内存效率低下

我正在开发一个项目,我所有的POJO都必须toString()Object class重写中继承.

考虑下面的不可变类:

public final class SomeActivity {
    private final int id;
    private final String name;
    private final String description;
    private final DateTime startDate;
    private final DateTime endDate;
    private final String note;

    // Constructors and getters

    // My future implementation of toString
}
Run Code Online (Sandbox Code Playgroud)

覆盖的目标toString()是实现和输出类似下面的输出(使用所有SomeActivity类字段的测试值):

[Id: 1, Name: Read a book, Description: Trying to discover how to build a plane, StartDate: 17/10/2013, EndDate: 15/11/2013, Note: I really need this]

所以,我有两个解决方案:

1 - 连接字符串 …

java out-of-memory immutability

5
推荐指数
1
解决办法
870
查看次数

ORA-00932 - 创建自定义类型表后的数据类型不一致

我正在开发一个返回两列结果的查询:VARCHAR(256)NUMBER.为了存储查询结果以供将来使用,我创建了以下类型:

-- An object representing each of the records of my query
create or replace TYPE TP_SOME_TYPE IS OBJECT(
    SOME_TEXT VARCHAR2(256), 
    SOME_NUMBER NUMBER
);

-- A table of the objects created above:
create or replace TYPE TP_SOME_TABLE AS TABLE OF TP_SOME_TYPE;
Run Code Online (Sandbox Code Playgroud)

最后,我运行一个示例SQL尝试在类型变量中收集结果TP_SOME_TABLE:

DECLARE
    SOME_RESULT TP_SOME_TABLE;
BEGIN
    EXECUTE IMMEDIATE 'SELECT ''TEXT'' AS SOME_TEXT, 1 AS SOME_NUMBER FROM DUAL'
    BULK COLLECT INTO SOME_RESULT;
END;
Run Code Online (Sandbox Code Playgroud)

并收到以下错误消息:

ORA-00932: tipos de dados inconsistentes: esperava - obteve - …
Run Code Online (Sandbox Code Playgroud)

oracle plsql oracle11g

2
推荐指数
1
解决办法
676
查看次数