反射

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)方法。

Next:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注