Java - 抽象问题

发布于 2024-10-01 04:36:40 字数 352 浏览 2 评论 0原文

我有这个烦恼。我正在使用一些库,我需要创建一个作为接口的类的实例。

  • 如果我这样做 this.createITextArea() 它将创建该对象。
  • 如果我这样做 ITextArea area = new ITextArea() 我不能,因为该类是抽象的。

事实上,我需要通过一个函数发送它。但使用第一种方法我不能,或者我不知道如何获取该类的变量。我怎样才能通过呢?

我需要诸如 area=this.createITextArea() 这样的东西,这样我就可以在函数中使用变量区域...

希望问题很清楚...

I have this trouble. Im working with some library, and i need to create an istance of a class that is an interface.

  • If i do this.createITextArea() it will create the object.
  • If i do ITextArea area = new ITextArea() i can't, because the class is abstract.

In fact, i need to send it trought a function. But with first method i can't, or i don't know how to get the variable for that class. How can I pass it?

I need somethings like area=this.createITextArea(), so i can use the variable area in the function...

Hope the question is clear...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

_畞蕅 2024-10-08 04:36:40

那么这有什么问题:

ITextArea area = this.createITextArea();

So what's the problem with this:

ITextArea area = this.createITextArea();

?

极度宠爱 2024-10-08 04:36:40

尽管问题有点不清楚:

例如:

ITextArea area = this.createITextArea();
someObj.someMeth(area);

或内联:

someObj.someMeth(this.createITextArea());

我建议进一步阅读 Java 接口。

Despite the question being a bit unclear:

E.g.:

ITextArea area = this.createITextArea();
someObj.someMeth(area);

or inline:

someObj.someMeth(this.createITextArea());

I'd recommend further reading on Java Interfaces.

征棹 2024-10-08 04:36:40

您不需要创建接口的实例。您需要创建一个实现所述接口的类的实例。查找或编写这样的实现,实例化它,然后将其分配给您的变量。

You do NOT need to create an instance of an interface. You need to create an instance of a class which implements said interface. Find or write such an implementation, instantiate that, and then assign it to your variable.

九歌凝 2024-10-08 04:36:40

类的实例绝不是接口。方法可能返回接口类型,但是通过该方法获得的“事物”始终是实现该接口的对象。

一些简单的例子来说明它:

public static main(String[] args) {
  List list = createList();
}

public static List createList() {
  return new ArrayList();
}

createList方法返回一个接口类型(List)但是它返回一个真实类的实例(>ArrayList)。所以最后,局部变量list保存了对此ArrayList实例的引用。

回到你的例子:假设你有一个接口

public interface ITextArea { /* methods */ }

并且想要创建一个“实现这个接口”的对象,那么你需要另一个类似的类

public class TextArea implements ITextArea { /* methods */ }

,并且你需要创建这个具体类的实例。

An instance of a class is never an interface. A method may return an interface type, but the "thing", that you get through the method, is always an object which implements this interface.

Some simple examples to illustrate it:

public static main(String[] args) {
  List list = createList();
}

public static List createList() {
  return new ArrayList();
}

The createList method returns an interface type (List) but it returns an instance of a real class (ArrayList). So at the end, the local variable list holds a reference to this instance of ArrayList.

Back to your example: Assuming you have an interface

public interface ITextArea { /* methods */ }

and want to create an object "that implements this interface", then you need another class like

public class TextArea implements ITextArea { /* methods */ }

and you'll want to create instances of this concrete class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文