java多参数如何表达,如何在Java中使用方法参数来实现多个接口?

在Java中执行此操作是合法的:

void spew(Appendable x)

{

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

}

我该怎么做(语法不合法):

void spew(Appendable & Closeable x)

{

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

if (timeToClose())

x.close();

}

我希望尽可能强制调用者使用Appendable和Closeable的对象,而不需要特定的类型.有多个标准类可以做到这一点,例如: BufferedWriter,PrintStream等

如果我定义自己的界面

interface AppendableAndCloseable extends Appendable, Closeable {}

因为实现Appendable和Closeable的标准类没有实现我的接口AppendableAndCloseable(除非我不理解Java以及我认为我做的…空接口仍然在其超级接口之上和之外添加唯一性),这将无法工作.

我能想到的最接近的是做以下其中一项:

>选择一个接口(例如Appendable),并使用运行时测试来确保参数是其他参数的实例.缺点:编译时没有遇到问题.

>需要多个参数(捕获编译时正确但看起来很笨):

void spew(Appendable xAppend, Closeable xClose)

{

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

if (timeToClose())

xClose.close();

}

解决方法:

你可以用泛型来做到这一点:

public void spew(T t){

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

if (timeToClose())

t.close();

}

实际上,你的语法几乎是正确的.

标签:java,oop,multiple-inheritance

来源: https://codeday.me/bug/20190928/1827173.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值