小编Mat*_*att的帖子

泛型:从实现接口的抽象类继承

我有以下界面:

public interface SingleRecordInterface<T> {
    public void insert(T object);
}
Run Code Online (Sandbox Code Playgroud)

我有下面的抽象类(没有提到方法插入):

public abstract class AbstractEntry implements SingleRecordInterface<AbstractEntryBean> {
}
Run Code Online (Sandbox Code Playgroud)

我有具体的课程:

public class SpecificEntry extends AbstractEntry {
    public void insert(SpecificEntryBean entry) {
        // stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,SpecificEntryBean定义为:

public class SpecificEntryBean extends AbstractEntryBean {
}
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

SpecificEntry类型必须实现继承的抽象方法SingleRecordInterface.insert(AbstractEntryBean)

鉴于SpecificEntryBean扩展了AbstractEntryBean,我不明白这个错误的原因.我该如何解决这个错误?

java inheritance abstract-class interface

19
推荐指数
1
解决办法
5万
查看次数

在视图中订购是否保证选择顺序?

我认为使用某种顺序才有意义.我想要做的是ORDER BY在视图中包含该子句,以便该视图上的所有SELECTs都可以省略它.但是,我担心订购可能不一定会延续到SELECT,因为它没有指定订单.

是否存在视图指定的排序不会反映在该视图上的选择结果中的情况(视图中的order by子句除外)?

sql postgresql select

12
推荐指数
1
解决办法
2263
查看次数

Unnest阵列一级

我想获取一个n维度数组和包含n-1维数组行的返回集.例如,获取数组ARRAY[[1,2,3], [4,5,6], [7,8,9]]并返回一个集合{1,2,3}, {4,5,6}, {7,8,9}.使用unnest返回集合1,2,3,4,5,6,7,8,9.

我尝试从PostgreSQL 8.4中获取不需要的函数,这似乎就像我正在寻找的那样:

CREATE OR REPLACE FUNCTION tstng.unnest2(anyarray)
    RETURNS SETOF anyelement
    LANGUAGE plpgsql
    IMMUTABLE
    AS $$
    BEGIN
            RETURN QUERY SELECT $1[i]
                FROM generate_series(array_lower($1,1), array_upper($1,1)) i;
        END;
    $$;
Run Code Online (Sandbox Code Playgroud)

但是,SELECT tstng.unnest2(ARRAY[[1,2,3], [4,5,6], [7,8,9]]);返回集合, ,(即:3个空行).

我还发现SELECT (ARRAY[[1,2,3], [4,5,6], [7,8,9]])[0];返回null,我认为这是我问题的根源.

arrays postgresql plpgsql

11
推荐指数
2
解决办法
1万
查看次数

动态SQL(EXECUTE)作为IF语句的条件

我想执行一个动态SQL语句,其返回值是IF语句的条件:

IF EXECUTE 'EXISTS (SELECT 1 FROM mytable)' THEN
Run Code Online (Sandbox Code Playgroud)

这会产生错误ERROR: type "execute" does not exist.

是否可以这样做,或者是否有必要在IF语句之前执行SQL变量,然后将变量检查为条件?

postgresql dynamic-sql plpgsql

11
推荐指数
2
解决办法
3万
查看次数

用内部类对单元测试类的正确方法

类A具有内部类B.类A具有通过getBs,addB和removeB方法提供的B类对象的私有列表.如何对removeB方法进行单元测试?

我希望创建两个相同的B类模拟,添加每个,然后删除其中一个两次(结果是删除它们).但是,我已经通过失败了解到不会在模拟对象上调用equals方法.

尝试将外部类与其内部类隔离以进行单元测试是愚蠢的(或不可能的)吗?


示例代码如下

要测试的类:

import java.util.ArrayList;
import java.util.List;

public class Example {
    private List<Inner> inners = new ArrayList<Inner>();

    public List<Inner> getInners() {
        return inners;
    }

    public void addInner(Inner i) {
        inners.add(i);
    }

    public void removeInner(Inner i) {
        inners.remove(i);
    }

    /**
     * equalityField represents all fields that are used for testing equality
     */
    public class Inner {
        private int equalityField;
        private int otherFields;

        public int getEqualityField() {
            return equalityField;
        }

        public Inner(int field) {
            this.equalityField = field;
        }

        @Override
        public …
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing easymock

5
推荐指数
2
解决办法
3万
查看次数