【问题标题】:Basic Java interface return object in a class that implements the interface实现接口的类中的基本 Java 接口返回对象
【发布时间】:2015-03-20 16:46:39
【问题描述】:
public interface foo {

    String ex(String a);
}

public class myclass implements foo {
    public String ex(String a) {
        //define the method
        return a;
    }
    public static foo getsome() {
        //have to return for example if I do ex("abc") return "123" but have to retrun the object of the interface o.O
    }
}

我不知道如何返回接口对象,因为我知道接口对象无法实现。另一方面,所有命令的get方法都没有输入。那我该怎么办?

【问题讨论】:

  • 一个“接口的对象”只是一个类的任何实例,它在其层次结构的某个地方实现了所述接口。如果您实际上有一个实现该接口的对象,那么您可以确定该对象确实实现了该接口的所有方法。否则,您将无法开始获取对象。您在这里需要做的就是从getsome() 方法返回一个myclass 的实例。
  • 谢谢@JonK,现在我知道如何使用我的界面命令了。

标签: java interface


【解决方案1】:

我将调用object,一个类的实例,例如:

private myclass myObject = new myclass();

这个对象(myObject)可以作为它的类(myclass)、它实现的任何接口(foo)或它扩展的任何类(Object,因为每个类都扩展Java中的Object)来访问。所以以下都是有效的:

public myclass getMyClass() { return myObject; }
public foo getMyFoo() { return myObject; }
public Object getMyObject() { return myObject; } 

回到你的代码,如果你想使用静态方法:

private static myclass instance = new myclass();

public static foo getsome() {
     return instance;
}

【讨论】:

  • 谢谢你的帮助,但我有同样的问题,因为我的命令的返回类型是字符串而不是命令 ex("abc") 来做 getsome。
  • @HKing 很抱歉,我不明白您仍然遇到的问题。从“abc”到“123”的转换的实现在您原始问题的“//定义方法”部分,所以 myclass.getsome().ex("abc") 将返回“123”。跨度>
  • 如果我只返回 getsome() eclipse 中的 istance 给我一个类似'unraechble code'的错误。所以我想我必须在 getsome 中返回 istance.execute("abc") ......不?但问题是返回一个字符串对象,而不是命令对象。
  • “无法访问的代码”不是由返回实例引起的,而是由一些永远不会执行的代码引起的,因为它在 return 语句之后。如果你返回 instance.execute("abc") 类型是字符串,而不是 foo。
  • 谢谢你,我不知道……你是我的英雄!你能告诉我为什么我必须只返回距离吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 2019-12-17
  • 2019-12-19
  • 2011-05-16
  • 2019-02-10
  • 2012-01-20
  • 1970-01-01
相关资源
最近更新 更多