0

我找到了如下所示的代码

public static final Object[][] TABLE_COLUMNS = {
            { "HistoryDate", new Integer(Types.TIMESTAMP) }, //java.sql.Type


            { "id", new Integer(Types.VARCHAR) },                 

            { "SessionId", new Integer(Types.VARCHAR) }};

上面的代码有效吗?如何?可能是我对上面的代码有误解
Type.VARCHAR=12。我们不能写吗Integer.valueOf(12);

4

5 回答 5

4

是的,您可以只使用 12 的值,但这将是一个神奇的数字,通常被认为是不好的做法。

什么是幻数,为什么它不好?

于 2013-04-02T12:12:03.563 回答
3

这个数组似乎存储了列名和它们的数据类型(使用 Object[][] 是有问题但有效的):

您可以编写 Integer.valueOf(12) 但可读性将完全消失。(严格来说你可以写

{ "HistoryDate", Types.TIMESTAMP }

让自动装箱完成其余的工作。)

于 2013-04-02T12:13:47.793 回答
2

当然你可以写 new Integer(12),但这会大大降低可读性。如果其他人掌握了这个代码,他将不知道这意味着什么。在这种情况下,你知道它引用了 MySQL 类型中 VARCHAR 类型的常量。

于 2013-04-02T12:13:05.883 回答
2

为什么你的提议是一个改进?我认为使用 Types 是更好的文档。它以“12”永远无法做到的方式清楚地说明了正在发生的事情。

于 2013-04-02T12:25:36.807 回答
1

是的,你可以,但这就是常量的目的,对吧?如果有人决定更改 to 的值VARCHAR1337您将不必更改代码...

于 2013-04-02T12:11:52.033 回答