Skip to content

Instantly share code, notes, and snippets.

@manoelcampos
Created April 12, 2024 18:50
Show Gist options
  • Save manoelcampos/33347ea80df19b51c3c2ce94e1334f2b to your computer and use it in GitHub Desktop.
Save manoelcampos/33347ea80df19b51c3c2ce94e1334f2b to your computer and use it in GitHub Desktop.
Mostra como implementar o método clone (type-unsafe) em uma classe Java simplesmente incluindo um implements Cloneable
public class Movimentacao implements Cloneable {
private int id;
private String descricao;
public Movimentacao(int id, String descricao) {
this.descricao = descricao;
this.id = id;
}
@Override
public String toString() {
return "Movimentacao{id=%d, descricao='%s'}".formatted(id, descricao);
}
public static void main(String[] args) {
var m1 = new Movimentacao(1, "Manoel");
System.out.println(m1);
try {
// Veja que temos que fazer um cast, o que torna este código type-unsafe
var m2 = (Movimentacao)m1.clone();
System.out.println("M2: Cópia de M1 inalterada - " + m2);
m2.id = 2;
System.out.println("M2: depois de alterada " + m2);
System.out.println("M1: não é alterado com alteração no M2 " + m1);
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment