Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java编码标准_Java - Fatal编程技术网

java编码标准

java编码标准,java,Java,我发现一个代码如下所示 public static final Object[][] TABLE_COLUMNS = { { "HistoryDate", new Integer(Types.TIMESTAMP) }, //java.sql.Type { "id", new Integer(Types.VARCHAR) }, { "SessionId", new Integer(Typ

我发现一个代码如下所示

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)

可以,但这就是常数的用途,对吗?如果有人决定将
VARCHAR
的值更改为
1337
,您不必更改代码…

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


当然,您可以编写新的整数(12),但这会大大降低可读性。如果其他人手里拿着这个代码,他根本不知道这意味着什么。在这种情况下,他和您知道它引用了MySQL类型中VARCHAR类型的常量。

此数组似乎存储列名及其数据类型(Object[][]的使用值得怀疑,但有效):

您可以编写Integer.valueOf(12),但可读性将完全丧失。)严格地说,你可以写作

{ "HistoryDate", Types.TIMESTAMP }

让自动装箱完成剩下的工作。)

为什么您的建议会有所改进?我认为使用这些类型是更好的文档。它以“12”永远不可能的方式清楚地说明了发生了什么。

Type.VARCHAR在java.sql.Type类中定义为常量。所以没人能改变它。你认为代码是自己写的吗?我不明白。你的意思是说,在我的OP中,你可以更改
类型的值。VARCHAR=1337
?但是你仍然需要重新编译。可读性是主要原因。@AmitG我猜“某人”的意思是,首先定义Types.VARCHAR的语言创建者可能有一天会选择随意重新排列数字。这里不建议使用自动装箱,因为0和128之间的值有一个内部整数缓存,所以它应该是同一个对象(此处为12)如果你想把它转换成一张地图,@Chasmo,既然我们谈论的是一组固定的元素,那怎么会是一件坏事呢?我们希望他们是一样的,对吗?无论如何,我建议用一张地图或至少一个物体来保存这两个值。@Chasmo你想说的不是很清楚。。。是的,所有的
12
都将是相同的
Integer
实例,但这是一个什么问题呢?我认为这没有问题。我更仓促地想到了集合的一般定义,其中不允许重复值,尽管java集合和映射中允许通过不同的键重复值。因此,请随意选择您喜欢的autobox;-)@Chasmo让我们希望没有人断章取义地说出你的最后一句话:-Dso那么我们可以像
Types.VARCHAR
那样编写,而不是
newinteger(Types.VARCHAR)
你应该始终使用定义的常量,但是你可以通过使用
Integer.valueOf(Types.VARCHAR)