2012-05-05 2 views
0

Я разработал ниже код, основанный на концепции неизменности, поскольку мы знаем, что в классе строки java неизменен, поэтому я также разработал класс ниже, как неизменный, пожалуйста, сообщите мне, правильно ли это в соответствии с immutablility ..Что касается неизменяемого класса

public final class BrokenPerson 
{ 
    private String firstName; 
    private String lastName; 
    private Date dob; 

    public BrokenPerson(String firstName, String lastName, Date adob) 
    { 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.dob = new Date(adob.getTime()); 
    } 

    public String getFirstName() 
    { 
     return this.firstName; 
    } 
    public String getLastName() 
    { 
     return this.lastName; 
    } 
    public Date getDOB() 
    { 
     return new Date(dob.getTime()); 


    } 
} 

ответ

0

Это правильно, так как нет никакого способа изменить объект

4

final применяется к классу делает непродолжаемым, не неизменны.

Вы хотите, чтобы ваши члены были final.

public final class BrokenPerson 
{ 
    private final String firstName; 
    private final String lastName; 
    private final Date dob; 
    //... 
} 

Конечно, как сейчас, класс не может быть изменен, так как частные поля не изменяются любыми методами членов, но, за строгость, вы должны пометить их как final.

+0

@ Luchian..yeah дружище сделать окончательный дать больше щит – dghtr

+0

Там также определенные гарантии из 'final' полей в модели памяти Java при обращении экземпляры нескольких потоков. – Grundlefleck

Смежные вопросы