真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

unmodifiableList方法怎么在java項目中使用

本篇文章給大家分享的是有關(guān)unmodifiableList方法怎么在java項目中使用,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)建站主打移動網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、域名與空間、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再決定采用什么樣的設(shè)計。最后,要實現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計,我們還會規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。

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

首先舉例描述問題:

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 courses;

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

  public List 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 courses = new ArrayList();
    courses.add("Math");
    courses.add("Chinese");

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

  }
}

執(zhí)行結(jié)果:

Alice

18

Math

Chinese

Alice

18

Math

Chinese

English

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

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

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

Exception in thread "main" java.lang.UnsupportedOperationException

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

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

以上就是unmodifiableList方法怎么在java項目中使用,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁題目:unmodifiableList方法怎么在java項目中使用
網(wǎng)頁URL:http://weahome.cn/article/psjies.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部