Skip to content

immutable

  • The final keyword can be used to make a class, method or variable immutable.
  • Final variable: Once a final variable is assigned a value, it becomes a constant and can no longer be changed.
  • Final method: Once a method is made final, it cannot be overridden.
  • Final Class: Once a class is made final, it cannot be extended.
package JavaSE.immutable;

import java.sql.Array;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @Author: eve
 * @Date: 2025-01-31 12:44
 */
public final class Student {
    private final String name;
    private final List<String> courses;

    public Student(String name, List<String> courses){
        this.name = name;
        this.courses = new ArrayList<>();
        Iterator var3 = courses.iterator();

        while(var3.hasNext()){
            String course = (String) var3.next();
            this.courses.add(course);
        }

    }

    public List<String> getCourses(){
        List<String> temp = new ArrayList<>();
        Iterator var2 = this.courses.iterator();

        while(var2.hasNext()){
            String c = (String) var2.next();
            temp.add(c);
        }
        return new ArrayList<>(this.courses);
    }

    public String toString(){
        return "Student{name='" + this.name + "', courses=" + this.courses + "}";
    }

    public static void main(String[] args){
        List<String> courses = new ArrayList<>();
        Student s1 = new Student("Mark", courses);
        System.out.println(s1);
        List<String> existCourses = s1.getCourses();
        existCourses.add("Hibernate");
        existCourses.add("Maven");
        System.out.println(s1);
        System.out.println(s1.getCourses());
        System.out.println(existCourses);
    }
}