投射到接口的目的是什么?
我有那个界面
public interface Iperson{
String getTitle();
int getID();
}
我有一个实现它的类,例如
public class Person implements Iperson{
public Person(){...}
@Override
public String getTitle() {
return 'aaa';
}
@Override
public int getID() {
return '111';
}
}
在另一个类中,我有一个带有签名的函数:
public boolean insert(Iperson somePerson)
当
insert(somePerson)
是somePerson
的实例且Person
是强制转换的somePerson
时,调用(Iperson)Person
有什么区别?什么时候使用第二种选择?
最佳答案
绝对没有。
将对象传递给方法时,该对象将强制转换为函数所需的参数类型。在这种情况下,由于将Person
传递给insert()
,因此Person被转换为IPerson
。
如果Person
没有实现IPerson
,则无法将其传递给insert()
。但是,由于Person
实现了IPerson
,因此在将其传递给IPesrson
函数时,会将其隐式转换为insert(IPerson)
。