当前位置: 首页 > 面试题库 >

Java接口扩展了问题

梁丘烨
2023-03-14
问题内容

我必须实现一个RMI服务器,该服务器将成为其他两个RMI服务的前端。因此,我决定逻辑上要做的是使该接口实现其他两个服务的接口。

public interface FrontEndServer extends Remote, BookServer, StudentServer
{
    // Block empty so far
}

但是,StudentServer上有一种方法

/**
 * Allows a student to borrow a book
 * 
 * @param studentID of the student who wishes to borrow a book
 * @param bookID of the book the student wishes to borrow
 * @throws RemoteException
 * @throws StudentNotFoundException when a student is not found in the system
 */
void addBookToStudent(int studentID, int bookID) throws RemoteException, StudentNotFoundException;

我也想FrontEndServer抛出一个错误,BookNotFoundException因为该服务还将在尝试添加详细信息之前验证该书是否确实存在。

这是可能的还是我的设计思想完全被取消了,实际上这是一个糟糕的设计思想,好像其他接口都已更改一样?而且,为里面的所有方法编写方法签名会更好FrontEndServer吗?


问题答案:

如果扩展接口(如果实现接口,则同样适用),则无法覆盖方法并使该方法抛出比原始方法 更多的 检查异常。您可以抛出相同或更少但不能更多的东西。

考虑一下:

interface A {
  void foo();
}

interface B extends A {
  void foo() throws IOException;
}

A a = new B() { ... }
a.foo();

可能会引发IOException,但您无法知道。这就是为什么你不能这样做。

这当然是完全可以接受的:

interface A {
  void foo() throws IOException;
}

interface B extends A {
  void foo();
}

A a = new B() { ... }
try {
    a.foo();
} catch (IOException e) {
    // must catch even though B.foo() won't throw one
}

BookNotFoundException但是,您可以扩展RuntimeExceptionRemoteException。但不确定这是否是一个好方法。



 类似资料:
  • 我想创建一个类,比如Employee,它实现了通用接口Compariable,并重写了方法equals、hashCode和toString。。。我怎样才能做到呢? 这样可以吗 和

  • 为什么它这样做,它有一个更好的做法?在sub接口中实现方法有什么区别吗?

  • 问题内容: 在Java中,当接口扩展另一个接口时: 为什么要实现其方法? 当接口不能包含方法主体时,如何实现其方法 当扩展另一个接口而不实现它时,如何实现这些方法? 接口实现另一个接口的目的是什么? 这是Java的主要概念! 编辑: 在eclipse中,除了中的实现方法之外,还有实现符号。 当我将鼠标悬停在它上面时,它表示它实现了该方法!!! 问题答案: 为什么要实现其方法?当接口不能包含方法主体

  • 有人知道如何扩展dropwizard界面吗?现在它只有所需的选项,但我需要为anooted方法添加权限。 例如: 我有一个用户管理员和一个普通用户。两者都可以进行身份验证并到达我的@auth带注释的资源。但我想允许一些(不是全部)http方法请求只为管理员和普通用户删除。如何在资源之外执行此操作?类似的东西

  • 主要内容:org.springframework.context.ApplicationContextInitializer,org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor,org.springframework.beans.factory.config.BeanFactoryPostProcessor,,,,,,,,,,,,1.可扩展的接口启动调用顺序图 ApplicationConte

  • 主要内容:org.springframework.context.ApplicationContextInitializer,org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor,org.springframework.beans.factory.config.BeanFactoryPostProcessor,,,,,,,,,,,,1.可扩展的接口启动调用顺序图 ApplicationConte