Java 空体的接口实现

Java 空体的接口实现,java,interface,Java,Interface,我有一个这样的用例 interface i { void method1(); void method2(); } class A implements i { void method1() { System.out.println("Method1 A .."); } void method2() { System.out.println("Method2 A .."); } } class B implements i { voi

我有一个这样的用例

interface i {
   void method1();
   void method2();
}

class A implements i {
  void method1() {
     System.out.println("Method1 A ..");
  }

  void method2() {
     System.out.println("Method2 A ..");
  }
}


class B implements i {

  void method1() {
     System.out.println("Method1 B ..");
  }

  //Assume : B does not know how to implement method2
  //void method2() {

  //}
}
我知道类B可以是抽象的,不能为接口I实现method2


通常的做法是,如果我不希望我的类B是抽象的,如果它没有任何method2的实现,就从method2抛出异常?

如果你不打算从接口实现一个方法,你可以抛出一个UnsupportedOperationException。实际上,如果可能的话,应该避免这种情况,也许可以重新考虑设计。

如果您不打算从接口实现方法,可以抛出一个不支持的操作异常。确实,如果可能的话,应该避免这种情况,也许可以重新考虑设计。

如果B不知道如何实现方法2,那么您的接口就有点错误。您需要一个没有method2的更通用的接口,可能还需要一个包含method to的扩展接口,但它不是由B实现的。

如果B不知道如何实现method2,那么您的接口就有点错误。您需要一个没有method2的更通用的接口,可能还需要一个包含method to的扩展接口,但它不是由B实现的。

如果您没有完全实现接口的所有必需方法,则不应该实现该接口。看起来你实际上想做的是:


interface top
{
   void method1(); 
}

interface next extends top
{
    void method2();
}

class A implements next
{
    public void method1()
    {
        ... something ...
    }

    public void method2()
    {
        ... something ...
    }
}

class B implements top
{
    public void method1()
    {
        ... something ...
    }
}

如果没有完全实现接口的所有必需方法,则不应该实现该接口。看起来你实际上想做的是:


interface top
{
   void method1(); 
}

interface next extends top
{
    void method2();
}

class A implements next
{
    public void method1()
    {
        ... something ...
    }

    public void method2()
    {
        ... something ...
    }
}

class B implements top
{
    public void method1()
    {
        ... something ...
    }
}

在标准Java库中有一些关于这一点的先例。其中一些最值得注意的是迭代器接口中的“remove”方法,它抛出UnsupportedOperationException。请记住记录接口,说明抛出此异常是允许的。

在标准Java库中有一些这样的规则。其中一些最值得注意的是迭代器接口中的“remove”方法,它抛出UnsupportedOperationException。请记住记录接口,说明抛出此异常是允许的。

可能存在这样的情况,即您不拥有接口,也无法控制它。也可能存在这样的情况,即您不拥有接口,也无法控制它。您是指java.lang.UnsupportedOperationException吗?您的意思是java.lang.UnsupportedOperationException?