Java 方法需要具有多重继承的参数

发布于 2024-10-22 02:19:06 字数 251 浏览 1 评论 0原文

我不知道为什么我在网上找不到这个问题的答案。

我有实现多种方法的类,我想编写期望它们的方法。我不知道该怎么做,或者是否可能。

例如:

public void yellAtPet(<? extends Pet implements YellableAt> arg) {
    arg.yellAt("Don't go there!"); 
    arg.pet("Good Boy");
}

I don't know why I can't find an answer to this online.

I have classes that implement multiple methods and I would like to write methods to expect them. I don't know how to do it though or if it's even possible.

E.g:

public void yellAtPet(<? extends Pet implements YellableAt> arg) {
    arg.yellAt("Don't go there!"); 
    arg.pet("Good Boy");
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

那一片橙海, 2024-10-29 02:19:06

扩展用于接口和父类。

如果你想强制多个扩展,你需要类似的东西:

<T extends ClassA & InterfaceB>

要在方法上强制执行此操作,请泛化该类:

public class MyClass<T extends something & somethingelse>{
    public void doSomething(T arg)
    {
         //call methods defined by either interface
    }
}

Extends is used for both interfaces and parent classes.

If you want to inforce multiple extends you needs something like:

<T extends ClassA & InterfaceB>

To enforce this on a method, generify the class:

public class MyClass<T extends something & somethingelse>{
    public void doSomething(T arg)
    {
         //call methods defined by either interface
    }
}
甜点 2024-10-29 02:19:06

这应该可以作为通用方法正常工作,而无需使整个类通用:

public <T extends Pet & YellableAt> void yellAtPet(T arg) {
    arg.yellAt("Don't go there!"); 
    arg.pet("Good Boy");
}

This should work fine as a generic method, without making your entire class generic:

public <T extends Pet & YellableAt> void yellAtPet(T arg) {
    arg.yellAt("Don't go there!"); 
    arg.pet("Good Boy");
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文