欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談java中unmodifiableList方法的應用場景

 更新時間:2017年06月01日 07:56:16   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談java中unmodifiableList方法的應用場景。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

java對象中primitive類型變量可以通過不提供set方法保證不被修改,但對象的List成員在提供get方法后,就可以隨意add、remove改變其結構,這不是希望的結果。網上看了下,發(fā)現Collections的靜態(tài)方法unmodifiableList可以達到目的。方法原型為:public static <T> List<T> unmodifiableList(List<? extends T> list);用法也很簡單,傳入一個List實例la,返回這個list的只讀視圖lb,類型依然是List。之后對lb進行add、remove等改變其內容的操作將導致編譯不通過。

首先舉例描述問題:

Student.java

package com.liulei.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Created by Liulei on 2017/5/31.
 */
public class Student {
  private String name;
  private int age;
  private List<String> courses;

  public Student(){
    courses = new ArrayList<String>();
  }
  public Student(String name,int age,List<String> courses){
    this.name = name;
    this.age = age;
    this.courses = courses;
  }

  public List<String> getCourses(){
    return this.courses;
  }

  public void setName(String name) {
    this.name = name;
  }

  public void setAge(int age) {
    this.age = age;
  }

  public String getName() {
    return name;
  }

  public int getAge() {
    return age;
  }

  public void describe(){
    System.out.println(this.name);
    System.out.println(this.age);
    for (String course:courses){
      System.out.println(course);
    }
  }


}

App.java

package com.liulei.test;

import java.util.ArrayList;
import java.util.List;

/**
 * Hello world!
 *
 */
public class App
{
  public static void main( String[] args )
  {
    ArrayList<String> courses = new ArrayList<String>();
    courses.add("Math");
    courses.add("Chinese");

    Student student = new Student("Alice",18,courses);
    student.describe();
    List<String> myCourses = student.getCourses();
    myCourses.add("English");
    student.describe();

  }
}

執(zhí)行結果:

Alice

18

Math

Chinese

Alice

18

Math

Chinese

English

雖然只有getCourse,但依然可以被加上1門English。使用unmodifiableList可以解決這個問題,將Student的getCourses改寫:

public List<String> getCourses(){
    return Collections.unmodifiableList(this.courses);
  }

再次執(zhí)行,編譯器提示出錯:

Exception in thread "main" java.lang.UnsupportedOperationException

at java.util.Collections$UnmodifiableCollection.add(Collections.java:1055)

總結,使用unmodifiableList可以保證對象的list內容不被意料之外地修改,保證對象的封裝性。

以上這篇淺談java中unmodifiableList方法的應用場景就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Spring解決循環(huán)依賴的方法(三級緩存)

    Spring解決循環(huán)依賴的方法(三級緩存)

    今天,我們要說的是spring是如何解決循環(huán)依賴的。對于一個問題說解決之前,我們首先要先明確形成問題的本因。那么循環(huán)依賴,何為循環(huán)依賴呢?感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • SpringBoot中SmartLifecycle的使用解析

    SpringBoot中SmartLifecycle的使用解析

    這篇文章主要介紹了SpringBoot中SmartLifecycle的使用解析,SmartLifecycle是一個擴展了Lifecycle接口,可以跟蹤spring容器ApplicationContext刷新或者關閉的接口,實現該接口的實現類有特定的執(zhí)行順序,需要的朋友可以參考下
    2023-11-11
  • java實現簡單登錄界面的實戰(zhàn)過程

    java實現簡單登錄界面的實戰(zhàn)過程

    學習JAVA的過程當中,登陸界面是多數人第一個實現的小程序,下面這篇文章主要給大家介紹了關于利用java實現簡單登錄界面的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • 一文帶你看懂Java8中的lambda表達式和方法引用

    一文帶你看懂Java8中的lambda表達式和方法引用

    Lambda 表達式是 Java 8 引入的一項重要特性,它提供了一種簡潔、清晰且靈活的語法來表示可傳遞的匿名函數,下面就跟隨小編一起學習一下Java8中的lambda表達式和方法引用的相關知識吧
    2023-12-12
  • java實現小貓釣魚游戲

    java實現小貓釣魚游戲

    這篇文章主要為大家詳細介紹了java實現小貓釣魚游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Java生成二維碼的2種實現方法

    Java生成二維碼的2種實現方法

    這篇文章主要給大家介紹了關于Java生成二維碼的2種實現方法,二維碼的實質就是一個鏈接地址,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • Java?Stream排序的實現方式面試精講

    Java?Stream排序的實現方式面試精講

    這篇文章主要為大家介紹了Java?Stream排序的實現方式面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • SpringBoot Swagger2 接口規(guī)范示例詳解

    SpringBoot Swagger2 接口規(guī)范示例詳解

    Swagger(在谷歌、IBM、微軟等公司的支持下)做了一個公共的文檔風格來填補上述問題,在本文中,我們將會學習怎么使用Swagger的 Swagger2注解去生成REST API文檔,感興趣的朋友一起看看吧
    2023-12-12
  • SparkStreaming-Kafka通過指定偏移量獲取數據實現

    SparkStreaming-Kafka通過指定偏移量獲取數據實現

    這篇文章主要為大家介紹了SparkStreaming-Kafka通過指定偏移量獲取數據,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Java字符編碼簡介_動力節(jié)點Java學院整理

    Java字符編碼簡介_動力節(jié)點Java學院整理

    這篇文章主要介紹了Java字符編碼簡介,本文主要包括以下幾個方面:編碼基本知識,Java,系統(tǒng)軟件,url,工具軟件等,感興趣的朋友一起看看吧
    2017-08-08

最新評論