2014-09-01 63 views
8

我正在阅读有效的Java书,我有一个关于方法的命名约定的问题,当我应该使用toType和asType?例如,我们有toString,toArray,我们有asList。为什么我们没有将它称为toList而不是使用asList?Java方法命名约定toType和asType的区别?

这听起来很蠢,但我只是对差异感到好奇吗?

我是从不同的线程读到的,“如果方法返回的是同一个实例但是被转换为另一个类型,则使用AsXXX方法,如果方法使用对象数据构造不相关类型的新实例,则使用ToXXX方法。但为什么它不同于列表和列表到Java中的数组?

+0

这是什么意思,当我将列表转换为数组转换为其他类型,但从数组到列表他们只是包装它。这是我不明白为什么他们有两种不同的方式在彼此之间转换的部分? – amm 2014-09-01 17:42:31

回答

14

asXtoX之间的差异可以用Arrays.asList来说明。

Arrays.asList带有一个数组,并创建由数组支持的列表:

返回由指定数组支持的固定大小的列表。 (更改返回列表“直通”到阵列。)

它不创建独立列表。

另一方面,像toStringtoArray这样的方法创建一个独立于创建它的输入的新实例。

换句话说,asX接受一种类型的对象并创建一个不同类型的对象的视图。 toX接受输入对象并创建一个不同类型的新对象,由输入对象初始化。

+0

还有一件事,我没有能力改变,我的意思是添加新元素,返回列表它引发此错误“线程中的异常”主“java.lang.UnsupportedOperationException \t at java.util.AbstractList.add (AbstractList.java:131) \t at java.util.AbstractList.add(AbstractList.java:91)“但你是正确的我试图添加新的元素到数组中,但我仍然可以在列表中添加它,尽管我添加了它在asList之后。 – amm 2014-09-01 17:56:55

+0

现在完全有道理,多谢:-) http://stackoverflow.com/questions/18389012/how-to-add-elements-in-list-when-used-arrays-aslist – amm 2014-09-01 18:01:46