Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
如何在带有查询、QueryBuilder和测试类的java项目中摆脱打印输出中的对象内存位置?_Java_Design Patterns_Query Builder_Builder - Fatal编程技术网

如何在带有查询、QueryBuilder和测试类的java项目中摆脱打印输出中的对象内存位置?

如何在带有查询、QueryBuilder和测试类的java项目中摆脱打印输出中的对象内存位置?,java,design-patterns,query-builder,builder,Java,Design Patterns,Query Builder,Builder,在这个java项目中,我有三个名为Query、QueryBuilder和Test的类,它们由main方法组成 Query.java public class Query { private String SELECT; private String FROM; private String WHERE; private String ORDERBY; public void printQuery() { if (WHERE == null

在这个java项目中,我有三个名为Query、QueryBuilder和Test的类,它们由main方法组成

Query.java

public class Query {
    private String SELECT;
    private String FROM;
    private String WHERE;
    private String ORDERBY;

    public void printQuery() {
        if (WHERE == null && ORDERBY == null)
            System.out.println("SELECT " + SELECT + "\nFROM " + FROM + "\n");

        if (WHERE == null && ORDERBY != null)
            System.out.println("SELECT " + SELECT + "\nFROM " + FROM + "\nORDER BY " + ORDERBY + "\n");

        if (WHERE != null && ORDERBY == null)
            System.out.println("SELECT " + SELECT + "\nFROM " + FROM + "\nWHERE " + WHERE + "\n");

        if (WHERE != null && ORDERBY != null)
            System.out.println("SELECT " + SELECT + "\nFROM " + FROM + "\nWHERE " + WHERE + "\nORDER BY " + ORDERBY + "\n");
    }

    public String getSELECT() {
        return SELECT;
    }

    public void setSELECT(String SELECT) {
        this.SELECT = SELECT;
    }

    public String getFROM() {
        return FROM;
    }

    public void setFROM(String FROM) {
        this.FROM = FROM;
    }

    public String getWHERE() {
        return WHERE;
    }

    public void setWHERE(String WHERE) {
        this.WHERE = WHERE;
    }

    public String getORDERBY() {
        return ORDERBY;
    }

    public void setORDERBY(String ORDERBY) {
        this.ORDERBY = ORDERBY;
    }
}
QueryBuilder.java

public class QueryBuilder {
    private Query query;

    public QueryBuilder() {
        query = new Query();
    }

    public QueryBuilder setSelect(String selectString) {
        query.setSELECT(selectString);
        return this;
    }

    public QueryBuilder setFrom(String fromString) {
        query.setFROM(fromString);
        return this;
    }

    public QueryBuilder setWhere(String whereString) {
        query.setWHERE(whereString);
        return this;
    }

    public QueryBuilder setOrderBy(String orderByString) {
        query.setORDERBY(orderByString);
        return this;
    }

    public Query build() {
        query.printQuery();

        if (query.getFROM() == null && query.getSELECT() == null)
            throw new IllegalStateException("Query must have a SELECT and a FROM");

        if (query.getSELECT() == null)
            throw new IllegalStateException("Query must have a SELECT");

        if (query.getFROM() == null)
            throw new IllegalStateException("Query must have a FROM");

        return query;
    }
}
Test.java

public class Test {
    public static void main(String[] args) {
        Query query1 = new QueryBuilder().setSelect("name").setFrom("student").build();
        System.out.println(query1.toString());

        Query query2 = new QueryBuilder().setSelect("name").setFrom("student").setWhere("name = 'Name1'").build();
        System.out.println(query2.toString());

        Query query3 = new QueryBuilder().setSelect("name").setWhere("name = 'Name1'").build();
        System.out.println(query3.toString());
    }
}
输出-[1]:

我需要摆脱打印输出中的对象内存位置。(Query@2a139a55及Query@15db9742).


提前谢谢

重写
toString()
方法,而不是定义
printQuery()
方法:

@Override
public String toString() {
    if (WHERE == null && ORDERBY == null)
        return "SELECT " + SELECT + "\nFROM " + FROM + "\n";

    if (WHERE == null && ORDERBY != null)
        return "SELECT " + SELECT + "\nFROM " + FROM + "\nORDER BY " + ORDERBY + "\n";

    if (WHERE != null && ORDERBY == null)
        return "SELECT " + SELECT + "\nFROM " + FROM + "\nWHERE " + WHERE + "\n";

    if (WHERE != null && ORDERBY != null)
        return "SELECT " + SELECT + "\nFROM " + FROM + "\nWHERE " + WHERE + "\nORDER BY " + ORDERBY + "\n";

    // should never happen
    throw new IllegalStateException("Unhandled case");
}

重写
toString()
方法,而不是定义
printQuery()
方法:

@Override
public String toString() {
    if (WHERE == null && ORDERBY == null)
        return "SELECT " + SELECT + "\nFROM " + FROM + "\n";

    if (WHERE == null && ORDERBY != null)
        return "SELECT " + SELECT + "\nFROM " + FROM + "\nORDER BY " + ORDERBY + "\n";

    if (WHERE != null && ORDERBY == null)
        return "SELECT " + SELECT + "\nFROM " + FROM + "\nWHERE " + WHERE + "\n";

    if (WHERE != null && ORDERBY != null)
        return "SELECT " + SELECT + "\nFROM " + FROM + "\nWHERE " + WHERE + "\nORDER BY " + ORDERBY + "\n";

    // should never happen
    throw new IllegalStateException("Unhandled case");
}
覆盖
toString()
覆盖
toString()