Wat*_*oon 4 java parameters interface function
我正在编写一个 Java 应用程序,并且有一个问题。如何实现一个只有一个参数的函数,而该函数需要一个实现多个接口的参数?例如:
interface Father
{
}
interface Teacher
{
}
public void foo(FatherAndTeacher person) // How do I do this?
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用两个参数,例如:
public void foo(Father person1, Teacher person2)
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
但我认为也许有一个实现两个接口的参数会更好。
两个强制参数具有 2 个接口,您有 2 个基本选项:
创建一个扩展两者的通用接口并将其用作参数类型:
interface FatherAndTeacher extends Father, Teacher {
}
Run Code Online (Sandbox Code Playgroud)
问题是未实现该接口的对象不匹配。
在需要匹配对象来实现两个接口的地方使用泛型:
public <T extends Father & Teacher> void foo(T person) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用于接口,即您不能这样做T extends Number & String(2 个类)。但它适用于一个对象边界,在这种情况下,类必须是第一个:T extends ConcretePerson & Father可以,但T extends Father & ConcretePerson不行(其中ConcretePerson是类)。
| 归档时间: |
|
| 查看次数: |
2998 次 |
| 最近记录: |