当前位置: 首页 > 知识库问答 >
问题:

java:不兼容类型:推理变量RR的边界不兼容

柴翰藻
2023-03-14

JDK 1.8

设置和收集。

我想数一数那个十字路口

我试试这个:

SortedSet<VsatVlan> vsatVlans;
Collection<Integer> mobilityNsVlansList = mobilityNS.getVlanIds();
....
long intersectionCount = vsatVlans.stream()
    .filter(vsatVlan -> mobilityNsVlansList.contains(vsatVlan.getVlanId()))
    .collect(Collectors.collectingAndThen(
        Collectors.toSet(),
        set -> { // error here
            if (set.size() != 1) {
                throw new IllegalStateException();
            }
            return set.size();
        }
    ));

但我有一个错误:

incompatible parameter types in lambda expression: expected Set<Object> but found Set<VsatVlan>

java: incompatible types: inference variable RR has incompatible bounds
lower bounds: java.lang.Long,java.lang.Object
lower bounds: java.lang.Integer

共有1个答案

端木兴国
2023-03-14

如果我得到它的权利,你想返回的交叉计数只有如果不是零,否则你想抛出一个异常。您需要显式地提供集合的类型以消除您得到的错误:

return vsatVlans.stream()
                .filter(vsatVlan -> mobilityNsVlansList.contains(vsatVlan.getVlanId()))
                .collect(Collectors.collectingAndThen(Collectors.toSet(),
                    (Set<VsatVlan> set) -> {
                        if (set.size() == 0) {
                            throw new IllegalStateException("");
                        }
                        return set.size();
                    }
               ));

您也可以在此处使用选项,并避免if块:

return vsatVlans.stream()
               .filter(vsatVlan -> mobilityNsVlansList.contains(vsatVlan.getVlanId()))
               .collect(Collectors.collectingAndThen(Collectors.counting(), Optional::of))
               .filter(x -> x > 0)
               .orElseThrow(() -> new IllegalStateException(""));

但IMO计数,然后在一个单独的if块中进行检查,比上述两种方法更具可读性:

long count = vsatVlans.stream()
                      .filter(vsatVlan -> mobilityNsVlansList.contains(vsatVlan.getVlanId()))
                      .count();
if(count == 0){
    new IllegalStateException("")
}
return count;
 类似资料:
  • 错误:(65,52)java:不兼容类型:推理变量U的边界不兼容等式约束:akka。http。javadsl。模型HttpResponse下限:com。我的演员。聊天演员。聊天信息 下面这行代码显示了错误: 这里是HttpResponse是Akka Http的。 我不知道它在说什么。解决它的方法应该是什么?

  • 我有以下代码 出于某种原因,它抛出了以下编译错误 Solution.java:11:错误:不兼容类型:推断变量T具有不兼容的边界List=Arrays.asList(A);^相等约束:整数下界:int[]其中T是类型变量:T扩展方法中声明的Object asList(T...) 我假设这是一个Java8功能但我不知道如何解决这个错误

  • 我有一个树对象,它包含树对象的子对象(HashMap),等等 我需要按numericPosition变量筛选对象 例如: 在这种情况下,我应该得到一个树对象过滤的数字位置 树类 以防 我得到这个错误:错误:不兼容类型:推断变量R具有不兼容的边界 我一直在遵循这个例子,但它对我不起作用。https://www.mkyong.com/java8/java-8-filter-a-map-examples

  • 我试图从一个流列表,但我有一个例外。 这是一个带有对象列表的电影对象。 以下是电影: 我在列表中添加元素: 我有一个编译器错误:

  • 问题内容: 我有以下代码 由于某种原因,它会引发以下编译错误 Solution.java:11:错误:不兼容的类型:推断变量T具有不兼容的边界List list = Arrays.asList(A); ^等式约束:整数下限:int []其中T是类型变量:T扩展了在方法asList(T …)中声明的对象 我假设这是Java 8功能,但是我不确定如何解决该错误 问题答案: 期望可变数量的。不是,而是,

  • 以下程序在Java7和Eclipse Mars RC2中编译Java8: 使用javac 1.8.0_45编译器,报告了以下编译错误: 解决方法是在本地分配一个变量: 我知道类型推断在Java8中发生了很大变化(例如,由于JEP 101“广义目标类型推断”)。那么,这是一个错误还是一个新的语言“功能”? 编辑:我也向Oracle报告了JI-9021550,但以防万一这是Java8中的一个“功能”,