国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|

服務器之家 - 編程語言 - JAVA教程 - 淺談java中unmodifiableList方法的應用場景

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

2020-11-03 22:40Java教程網 JAVA教程

下面小編就為大家帶來一篇淺談java中unmodifiableList方法的應用場景。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

首先舉例描述問題:

Student.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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();
 
  }
}

執行結果:

Alice

18

Math

Chinese

Alice

18

Math

Chinese

English

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

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

再次執行,編譯器提示出錯:

Exception in thread "main" java.lang.UnsupportedOperationException

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美色综合天天久久综合精品 | 99在线视频观看 | 欧美日韩国产在线观看 | 四虎永久免费 | 天天艹 | 国产在线一区二区三区 | 久久国产精品久久久久久 | 亚洲欧美在线观看 | 毛片免费毛片一级jjj毛片 | 99久久国产露脸国语对白 | 欧州一区二区三区 | 操视频网站 | 国产精品网站在线观看 | 亚洲国产精品一区二区久久,亚洲午夜 | 亚洲 成人 av | 在线国产小视频 | av成人在线观看 | 高清在线一区二区 | 亚洲一区二区 | 黄色在线观看网站 | 在线视频亚洲 | 黄色电影在线免费观看 | 国产日韩精品一区 | www.色小妹| 日日操视频 | 精品久 | 国产一区二区三区免费看 | 久久久久久国产 | 91国产精品 | 免费的黄色网 | 青青五月天 | 日韩免费视频 | 成人伊人网 | 中文字幕在线免费看 | 欧美1区2区3区 | 96久久久 | 国产精品高清一区二区 | 九色porny丨国产精品 | 国产91精品在线 | 日本精品在线观看 | av成人在线观看 |