Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在引用的示例中,是否有替代方法覆盖抽象方法?_Java_Overriding_Abstract Class - Fatal编程技术网

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
passing
Json
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
passing
Json
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个问题有一个答案,但实际上我不理解最后一部分,我认为我缺乏知识。