Java泛型 - 泛型方法不编译

时间:2015-11-16 09:51:39

标签: java generics

嗨我有一个类SomeClass和一个私有地图,我希望在对象A和B的值列表中有B扩展A。

下面的代码没有编译..我不能更改类名中的任何内容,它必须保留为:

public class SomeClass {
<T extends ParentObject> Map<SignedOperationNameEnum, List<T>> operationToOrderStateSkipSignatureSetMap = new HashMap<>();
}

4 个答案:

答案 0 :(得分:1)

课后名称定义

.context-menu-title:disabled:hover {
    -fx-background-color: white;
}

.context-menu-title:disabled:hover .label {
    -fx-background-color: white;
    -fx-text-fill: black;
}

答案 1 :(得分:0)

您应该将代码更改为:

public class SomeClass<T extends ParentObject> {
    Map<SignedOperationNameEnum, List<T>> operationToOrderStateSkipSignatureSetMap = new HashMap<>();
}

答案 2 :(得分:0)

这取决于您使用的java版本。如果你使用的是java 1.7或更高版本,那么你可以使用:

 public class SomeClass<T extends ParentObject>  {
        Map<SignedOperationNameEnum, List<T>> operationToOrderStateSkipSignatureSetMap = 
                               new HashMap<>();
    }

如果你有1.6或更早,那么:

   public class SomeClass<T extends ParentObject>  {
        Map<SignedOperationNameEnum, List<T>> operationToOrderStateSkipSignatureSetMap = 
                               new HashMap<SignedOperationNameEnum, List<T>>();
    }

引入泛型的方法只写:

private <T extends ParentObject> Map<SignedOperationNameEnum, List<T>> operationToOrderStateSkipSignatureSetMap() {
    return new HashMap<>();
}

答案 3 :(得分:0)

我认为问题在于您使用的类型,例如此代码与您的代码非常相似,并且在1.7上完美运行。

public class SomeClass {

    static <T extends Number> Map<Integer, List<T>> operationToOrderStateSkipSignatureSetMap() {
        return null;

    }

    public static void main(String[] args) throws IOException {
        System.out.println(operationToOrderStateSkipSignatureSetMap());
    }
}