标识(空)接口有什么用?

标识(空)接口有什么用?

没有任何规范的接口,叫做标志接口。而它的意义就是给实现该接口的所有类打上一个标识,利用这个标识可以对这些类做统一的处理。

举个例子。
设计一个程序,定义一个Person类,类中要存放具体信息,但是信息分为基本信息和联系方式?
Person类里面包含Person信息,但信息分为两类,
一类是基本信息,一类是联系信息
我们要限制该泛型只能使用BasicInfo和MsgInfo,需要使用泛型的上限 T extends 超类。
而BasicInfo和MsgInfo 都是是我们需求的信息,这是俩个不同的类处理一个公共问题,这个时候我们就需要建立一个空接口,向上提取,做成一个超类。

public class Person<T extends Info> {
	private T msg;

	public T getMsg() {
		return msg;
	}

	public void setMsg(T msg) {
		this.msg = msg;
	}

	@Override
	public String toString() {
		return "Person [msg=" + msg + "]";
	}

}
//包含Person的基本信息
public class BasicInfo<T> implements Info {
	private T name;
	public T getName() {
		return name;
	}

	public void setName(T name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "BasicInfo [name=" + name + "]";
	}

}

// 联系信息
class MsgInfo<T> implements Info {
	private T msg;

	public T getMsg() {
		return msg;
	}

	public void setMsg(T msg) {
		this.msg = msg;
	}

	@Override
	public String toString() {
		return "BasicInfo [name=" + msg + "]";
	}
}

public class Test {
	public static void main(String[] args) {
		// 泛型嵌套
		Person<BasicInfo<String>> p = new Person();

		BasicInfo<String> basic = new BasicInfo<>();

		basic.setName("张三");

		p.setMsg(basic);

		System.out.println(p);

		Person<MsgInfo<String>> p2 = new Person();

		MsgInfo<String> msgInfo = new MsgInfo<>();

		msgInfo.setMsg("1234567");

		p2.setMsg(msgInfo);

		System.out.println(p2);

	}
}

public interface Info {// 标识接口
	// 没有定义具体规范

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值