Arrays.asList 返回值类型

public static void main(String[] args) {
        Integer[] datas = {1,2,3,4,5};
        List<Integer> list = Arrays.asList(datas);
        list.add(5);
        System.out.println(list.size());
    }

该代码会报错    java.lang.UnsupportedOperationException  ---不支持的操作

那么为什么不支持呢,先看API

再看源码就能很明白问题的所在了

@SafeVarargs
    @SuppressWarnings("varargs")
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }

注意!这个返回的ArrayList可不是我们平时用的,而是Arrays的一个内部类

private static class ArrayList<E> extends AbstractList<E>
        implements RandomAccess, java.io.Serializable{
/。。。。。。。。。
}

而这个类实现了Serializable接口,这就说明他是可序列化的,正如String一样,不可做更改

原文地址:https://www.cnblogs.com/yangxusun9/p/12178159.html

时间: 2024-11-08 07:51:50

Arrays.asList 返回值类型的相关文章

Arrays.asList( ) 返回一个特殊的“ArrayList”

一个Arrays.asList()基本的用法: String[] str = new String[]{"1","2","3"}; ArrayList al = new ArrayList(Arrays.asList(str));//将数组元素添加到集合的一种快捷方式 有时候这样使用就有可能出现问题: String[] str = new String[]{"1","2","3"}; L

函数式接口作为参数和作为返回值类型的案列

package com.itheima.demo3.LambdaTest; /** * @author newcityman * @date 2019/8/3 - 22:15 * 使用java.lang.Runnable接口作为参数,同时使用Lambda进行传参 */public class Demo01Runnable { // 定义一个方法startThread,方法的参数就是函数式接口Runnable public static void startThread(Runnable run)

oc对象函数什么时候返回值类型使用instancetype

oc中定义对象函数时经常会返回本类类型的对象,此时返回值类型用instancetype或者本类对象*都可以,什么区别呢? 其实主要区别在返回值是不是self并且有继承 如果返回值是self并且作为父类,那么返回值最好写成instancetype 举例说明: 父类的声明 @interface Father : NSObject @property(readwrite,nonatomic,assign)NSInteger item; //元素自增 为了比较自增返回类型定为instancetype -

赋值运算符函数的返回值类型详解

在c++赋值运算符函数的学习中,对于返回值类型的问题,一直非常费解,今天彻底总结一些每种不同返回值类型的结果: 1.当返回值为空时: <span style="font-size:14px;">void hasptr::operator=(const hasptr& s)</span> 这个时候如果只有一个'='(a = b)运算那就没问题,但是如果存在'='(a = b = c)的链式操作时,编译器就会报错 我们看:a = b = c: 程序会先运行

javascript函数参数、返回值类型检查

实现带参数.返回值类型声明的js函数: 类型定义:window.Str = Type.Str = Type.define('STRING', Type.isStr);var Per = Type.define('PERSON', function(p){    return p && p.type === 'person' && p.name;}); 定义函数:var addStr = Str(function(a, b){  return a + b;}, Str, St

Asp.net MVC 中Controller返回值类型ActionResult

内容转自 http://blog.csdn.net/pasic/article/details/7110134 Asp.net MVC中Controller返回值类型 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必须是一个public方法 必须是实例方法 没有标志NonActionAttribute特性的(NoAction) 不能被重载 必须返回ActionResult类型 如: [csharp] view pl

C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

原文地址:http://www.cnblogs.com/landeanfen/p/5501487.html 使用过Webapi的园友应该都知道,Webapi的接口返回值主要有四种类型 void无返回值 IHttpActionResult HttpResponseMessage 自定义类型 此篇就围绕这四块分别来看看它们的使用. 一.void无返回值 void关键字我们都不陌生,它申明方法没有返回值.它的使用也很简单,我们来看一个示例就能明白. public class ORDER { publi

java方法重写返回值类型

重写(Overriding)(1) 父类与子类之间的多态性,对父类的函数进行重新定义.如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding).在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法.但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写.方法重写又称方法覆盖.(2)若子类中的方法与父类中的某一方法具有相同的方法名.返回类型和参数表,则新方法将覆盖原有的方法.如需父类中原有的方法,可使用super关键字

函数返回值类型为枚举类型

枚举是个好东西,它和结构体一样,都可以定义一种数据类型,但是枚举有一个更优点,就是它可以默认指定定义的初始值. 有一个项目,涉及到CPU卡,卡片有错误.上电.DF01目录等状态,如果单独定义这些变量,要使用很多变量,这里有一个规律,即:CPU卡不能同时为这几种状态中的几个,只能为其中的一个,这样,我们可以定义一个枚举类型变量,例如: //标识ic的几种状态typedef enum{     ICC_ERROR,       ICC_NO_EXIST,       ICC_EXIST,