如何创建此接口的对象?
答案 0 :(得分: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只表示您要使用的任何引用类型(Class)
对于简单的数组类型(不是ArrayList),它将是:
Field<T>[] arr = new Field<T>()[size];
arr[0] = myField;
考虑使用ArrayList或其他一些Collection,没有理由使用带有引用变量的普通旧数组,如你的情况。
答案 1 :(得分:1)
我们不能instatiate
interface
(没有构造函数)......
您可能希望阅读有关"anonymous inner classes"主题的Java语言规范(或您最喜欢的Java书籍)。
答案 2 :(得分:1)
好吧,可能有Factory
个类来创建一些Field
接口实现的实例。
无论如何,API说Field
接口有一个实现 - &gt; 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>);
答案 3 :(得分:0)
你做不到。 interface
包含unimplemented methods
,创建一个对象是没有意义的 - 你需要创建一个类implement
接口,然后实例化该类。
答案 4 :(得分:0)
我坚信,我们不能instantiate
interface
。
您可以使用interface
的任何实现,也可以使用anonymous inner class。
Ex from docs
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
答案 5 :(得分:0)
您无法创建Interface
的对象。您可以创建Interface
类型的引用,并且可以包含实现interface
的任何类的对象。
因此您需要有一个实现Field
接口的类,并假设您将其命名为FieldImpl
。然后你可以像这样在Field的引用中保存FiledImpl的对象:
Field f = new FieldImpl();
答案 6 :(得分:0)
单向或反向,您需要一个实现Field的类。一种方法是使用匿名类:
Field myField = new Field() {
// implementation of Field's methods.
}
或者,您可以编写一个实现Field的命名类,并创建该类的实例。
答案 7 :(得分:0)
接口不能实例化,而是实现。
实现接口的类必须实现接口中描述的所有方法,或者是抽象类 Java中的对象引用可以指定为接口类型;在这种情况下,它们必须为null,或者绑定到实现接口的对象。