Có cần so sánh hai đối tượng dựa trên lớp mà chúng triển khai không? Khi so sánh sử dụng getClass()
và khi nào getClass().getName()
? Có sự khác nhau nào giữa phương pháp này để so sánh hai loại lớp (tên) của đối tượng không?So sánh hai loại theo loại hoặc tên lớp
public abstract class Monster { ... }
public class MonsterTypeOne extends Monster { ... }
public class MonsterTypeTwo extends Monster { ... }
Monster monster = MonsterTypeOne();
Monster nextMonster = MonsterTypeTwo();
if(nextMonster.getClass().getName().equals(monster.getClass().getName()))// #1
if(nextMonster.getClass().equals(monster.getClass()))// #2
EDIT 1
gì về?
nextMonster.getClass().equals(MonsterTypeOne.class)
Bạn có cần Equals với getClass? Nhận lớp trả về một đối tượng không phải String mà tôi tin. +1 câu hỏi thú vị. – jmort253