Java 为什么范围抛出UnsupportedOperationException?

Java 为什么范围抛出UnsupportedOperationException?,java,list,collections,groovy,range,Java,List,Collections,Groovy,Range,当我试图用下标操作符编辑groovy.lang.Range时,我出现了一个错误java.lang.UnsupportedOperationException,而java.util.List一切正常。没有迹象表明集合是不可变的。你知道我的代码Range \有什么问题吗 代码如下: def list = "a".."c" assert list instanceof java.util.List assert list.size() == 3 list[2] = "d" 控制台输出: Except

当我试图用下标操作符编辑groovy.lang.Range时,我出现了一个错误
java.lang.UnsupportedOperationException
,而java.util.List一切正常。没有迹象表明集合是不可变的。你知道我的代码Range \有什么问题吗

代码如下:

def list = "a".."c"
assert list instanceof java.util.List
assert list.size() == 3
list[2] = "d"
控制台输出:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.set(AbstractList.java:132)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.putAt(DefaultGroovyMethods.java:6607) <6 internal calls>
    at Hello.run(Hello.groovy:4) <15 internal calls>
    at Hello.main(Hello.groovy) <5 internal calls>
线程“main”java.lang.UnsupportedOperationException中的异常 位于java.util.AbstractList.set(AbstractList.java:132) 位于org.codehaus.groovy.runtime.DefaultGroovyMethods.putAt(DefaultGroovyMethods.java:6607) 运行(Hello.groovy:4) 在Hello.main(Hello.groovy) 更新


Groovy版本:1.8.6 JVM:1.6.0\u 45供应商:Sun Microsystems Inc.操作系统:Linux它看起来像Groovy使用的。在文档中,您可以看到它继承了来自
java.util.AbstractList
的add方法,该方法引发了不支持操作异常。

java.util.List
是一个接口。范围可能无法实现所有方法。。为了实现这一点,请使用
('a'..'c').toList()
将范围(在本例中为ObjectRange)转换为列表。有关详细信息,请参阅AbstractList。您确定这个类是可变的吗?@PeterLawrey不,我没有。这只是一个取决于问题的建议。