投射到接口的目的是什么?

我有那个界面

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)

09-10 07:02