Java 在引用的示例中,是否有替代方法覆盖抽象方法?
我对这个示例的实现有一个问题:。我们在嵌套的抽象静态类中有一个抽象方法:Java 在引用的示例中,是否有替代方法覆盖抽象方法?,java,overriding,abstract-class,Java,Overriding,Abstract Class,我对这个示例的实现有一个问题:。我们在嵌套的抽象静态类中有一个抽象方法: public class PhoneCallsCSVMigration { /** * representation of Input object that links an input file to its own templating function, * which is used to map a Json object to a Graql query string *
public class PhoneCallsCSVMigration {
/**
* representation of Input object that links an input file to its own templating function,
* which is used to map a Json object to a Graql query string
*/
abstract static class Input {
String path;
public Input(String path) {
this.path = path;
}
String getDataPath() {
return path;
}
abstract String template(Json data);
}
...
稍后,将覆盖抽象方法template(Json数据)
,目的是获得graqlInsertQuery
:
inputs.add(new Input("files/phone-calls/data/companies") {
@Override
public String template(Json company) {
return "insert $company isa company, has name " + company.at("name") + ";";
}
});
首先,如何能够实例化Input
类型的东西?其次,Json公司
来自哪里?我想将PhoneCallsCSVMigration
类分为几个类,如Input
、GraknHandler
、QueryHandler
等,我想知道除了覆盖抽象类之外,如何定义用于构造Graql插入查询的模板。非常感谢您的帮助
首先,如何能够实例化
输入类型
您没有实例化类Input
。您正在创建一个匿名类的实例,该类派生自Input
,并实现其抽象方法template
Json公司
来自哪里
它来自将调用模板
方法的方法,并将其作为参数传递
我把剩下的问题留给理解它的人
首先,如何能够实例化
输入类型
您没有实例化类Input
。您正在创建一个匿名类的实例,该类派生自Input
,并实现其抽象方法template
Json公司
来自哪里
它来自将调用模板
方法的方法,并将其作为参数传递
我把问题的其余部分留给理解它的人…证据外部输入子项是使用
路径和实现模板创建的。
可能这个对象被传递给周围的类,它调用template
passingJson
data
抽象方法也可以很容易地被函数
替换,但是该函数将错过路径
,因此可以使用双函数
您必须查看路径和Json的来源和时间。这里似乎有点做作。传统的(非常类似的)模式将是:
abstract class A {
public final void func() { // Some service offered by this class.
B b = ...;
C c = onFunc(b);
}
abstract protected C onFunc(B b); // Some requirement to implement.
}
- 这里的
func
是为服务的用户提供的
- 而
onFunc是为满足特定需求而提供的
因此,在你的案例中,断章取义有点奇怪或设计过度。仅仅传递一个回调函数似乎就可以了。证据外部是使用
路径和实现模板创建一个输入子级。
可能这个对象被传递给周围的类,它调用template
passingJson
data
抽象方法也可以很容易地被函数
替换,但是该函数将错过路径
,因此可以使用双函数
您必须查看路径和Json的来源和时间。这里似乎有点做作。传统的(非常类似的)模式将是:
abstract class A {
public final void func() { // Some service offered by this class.
B b = ...;
C c = onFunc(b);
}
abstract protected C onFunc(B b); // Some requirement to implement.
}
- 这里的
func
是为服务的用户提供的
- 而
onFunc是为满足特定需求而提供的
因此,在你的案例中,断章取义有点奇怪或设计过度。仅仅传递一个回调函数似乎就可以了。事实上,这对我来说似乎是人为的,这就是我的问题出现的原因。事实上,这对我来说似乎是人为的,这就是我的问题出现的原因。与其轻蔑地回答,请说明不清楚的地方。对不起,我不是有意轻蔑。只是我对前2个问题有一个答案,但实际上我不理解最后一部分,我认为我缺乏知识,而不是轻蔑地回答,请说明什么是不清楚的。对不起,我不是有意贬低的。只是我对前2个问题有一个答案,但实际上我不理解最后一部分,我认为我缺乏知识。