-4

我有 现场接口

如何创建这个接口的对象?

4

8 回答 8

2

查看所有已知的实现类:CustomField

这可能是您正在寻找的课程

Field<T> myField = new CustomField<T>(String name, DataType<T> type);

对于字段列表(数组):

ArrayList<Field<T>> arr = new ArrayList<Field<T>>();
arr.add(myField);

如果你不熟悉泛型,T 只代表你想使用的任何引用类型(类)

对于简单的数组类型(不是 ArrayList),它将是:

Field<T>[] arr = new Field<T>()[size];
arr[0] = myField;

考虑使用 ArrayList 或其他一些集合,没有理由像您的情况那样使用带有引用变量的普通旧数组。

于 2013-08-26T09:17:06.583 回答
1

好吧,可以有Factory一个类来创建一些Field接口实现的实例。

无论如何,API 说该Field接口有一个实现 ->CustomField它具有受保护的构造函数。它还说你必须实现两种方法:void toSQL(RenderContext context)void bind(BindContext context)

public static class MyField<T> extends CustomField<T> {
    private final String table;
    private final String field;

    MyField(String table, String field, DataType<T> type) {
      super(table + "." + field, type);

      this.table = table;
      this.field = field;
    }

    @Override
    public void toSQL(RenderContext context) {
        context.literal(table).sql(".").literal(field);
    }

    @Override
    public void bind(BindContext context) throws DataAccessException {}
}

然后你可以使用

Field<Object> xxx = new MyField<Object>("table", "field",dataTypeInstance<Object>);
于 2013-08-26T09:22:21.030 回答
1

我们不能instatiateinterface没有构造函数)...

您可能想阅读有关“匿名内部类”主题的 Java 语言规范(或您最喜欢的 Java 书籍) 。

于 2013-08-26T09:15:41.340 回答
0

一种或另一种方式,您需要一个实现 Field 的类。一种方法是使用匿名类:

Field myField = new Field() {
  // implementation of Field's methods.
}

或者,您可以编写一个实现 Field 的命名类,并创建该类的实例。

于 2013-08-26T09:16:29.410 回答
0

根据接口定义

接口不能被实例化,而是被实现。
实现接口的类必须实现接口中描述的所有方法,或者是抽象类。
Java 中的对象引用可以指定为接口类型;在这种情况下,它们必须要么为空,要么绑定到实现接口的对象。

于 2013-08-26T09:18:06.543 回答
0

你不能。一个interfacecontains unimplemented methods,创建一个对象是没有意义的 - 您需要将一个类implement作为接口,然后实例化该类。

于 2013-08-26T09:14:07.383 回答
0

我坚信,我们不能 instantiate interface

您可以使用任何实现,interface 或者您可以使用匿名内部类

来自文档的前

 btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });
于 2013-08-26T09:14:31.023 回答
0

您不能创建 的对象Interface。您可以创建一个Interface类型的引用,并且该引用可以包含任何实现该类型的类的对象interface

所以你需要有一个实现Field接口的类,假设你将它命名为FieldImpl. 然后您可以将 FiledImpl 的对象保存在 Field 的引用中,如下所示:

Field f = new FieldImpl();
于 2013-08-26T09:15:00.150 回答