java接口方法参数_java – 我如何要求一个方法参数来实现多个接口?

在Java中这样做是合法的:

void spew(Appendable x)

{

x.append("Bleah!\n");

}

如何做到这一点(语法不合法):

void spew(Appendable & Closeable x)

{

x.append("Bleah!\n");

if (timeToClose())

x.close();

}

我想如果可能强制调用者使用既是可附加的和可关闭的对象,而不需要一个特定的类型。有多个标准类,这样做,例如。 BufferedWriter,PrintStream等

如果我定义了我自己的接口

interface AppendableAndCloseable extends Appendable, Closeable {}

这将不工作,因为实现Appendable和Closeable的标准类不实现我的接口AppendableAndCloseable(除非我不理解Java以及我认为我做…空接口仍然增加了超出他们的超级接口的唯一性)。

最近我可以想到的是做以下之一:

>选择一个接口(例如Appendable),并使用运行时测试来确保参数是其他实例。下行:编译时无法捕获问题。

> require multiple arguments(catchches compile-time correctness but looks dorky):

void spew(Appendable xAppend, Closeable xClose)

{

xAppend.append("Bleah!\n");

if (timeToClose())

xClose.close();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值