89-反射
通过Java反射机制,可以在程序中访问类的定义、方法名等属性。Java一切类都继承Object,Object类里面有一个getClass方法,返回一个Class对象(注意是大写C),然后就可以使用这个Class对象获取这个类的一些描述信息了。
Apple a = new Apple();
Class c = a.getClass();
System.out.println(c.getName());
System.out.println(c.getPackage());
System.out.println(c.getMethods()[0]);
System.out.println(c.getField("Pick").getName());Code language: JavaScript (javascript)
90-重写toString方法
我们可以重写从Object继承过来的toString方法。比如当我们想将一个Apple对象toString的时候,希望把它的名字显示出来。
Apple a = new Apple();
System.out.println(a.toString()); //没有重写 默认输出的是 cn.bamn.Apple@3d4eac69Code language: JavaScript (javascript)
重写toString示例
public class Apple extends Fruit {
private String name;
public Apple(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}Code language: JavaScript (javascript)
Apple a = new Apple("小潘");
System.out.println(a.toString()); //输出:小潘Code language: JavaScript (javascript)
91-重写equals方法
equals方法是从Object中继承的,用来比较另外一个对象。可以重写它来实现自定义的比较逻辑。
public int equals(Apple apple) {
if (this.price > apple.price) {
return 1;
} else if (this.price == apple.price) {
return 0;
} else {
return -1;
}
}Code language: JavaScript (javascript)
Apple a = new Apple("小潘", 1.1f);
Apple a2 = new Apple("小潘2", 2.1f);
int res = a.equals(a2);
System.out.println(res); //输出:-1Code language: JavaScript (javascript)
注意:这里重写的是自定义比较方法,返回int表示大小关系。如果要符合Object的
equals规范(返回boolean),应该重写public boolean equals(Object obj)方法。