我有 现场接口
如何创建这个接口的对象?
查看所有已知的实现类: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 或其他一些集合,没有理由像您的情况那样使用带有引用变量的普通旧数组。
好吧,可以有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>);
我们不能instatiate
(interface
没有构造函数)...
您可能想阅读有关“匿名内部类”主题的 Java 语言规范(或您最喜欢的 Java 书籍) 。
一种或另一种方式,您需要一个实现 Field 的类。一种方法是使用匿名类:
Field myField = new Field() {
// implementation of Field's methods.
}
或者,您可以编写一个实现 Field 的命名类,并创建该类的实例。
根据接口定义
接口不能被实例化,而是被实现。
实现接口的类必须实现接口中描述的所有方法,或者是抽象类。
Java 中的对象引用可以指定为接口类型;在这种情况下,它们必须要么为空,要么绑定到实现接口的对象。
你不能。一个interface
contains unimplemented methods
,创建一个对象是没有意义的 - 您需要将一个类implement
作为接口,然后实例化该类。
我坚信,我们不能 instantiate
interface
。
您可以使用任何实现,interface
或者您可以使用匿名内部类 。
来自文档的前
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
您不能创建 的对象Interface
。您可以创建一个Interface
类型的引用,并且该引用可以包含任何实现该类型的类的对象interface
。
所以你需要有一个实现Field
接口的类,假设你将它命名为FieldImpl
. 然后您可以将 FiledImpl 的对象保存在 Field 的引用中,如下所示:
Field f = new FieldImpl();