java - 推断类型不符合上限

标签 java java-8

我正在做一个项目,我必须在其中否定 PPM 文件(图像)的像素。

我这样实现了否定函数:

public PPMImage negate() 
{
    RGB[] negated = new RGB[pixels.length];
    System.arraycopy(pixels, 0, negated, 0, pixels.length);
    RGB[] negatedArr = Arrays.stream(negated).parallel().map(rgb -> rgb.neg(maxColorVal)).toArray(size -> new RGB[size]);
    return new PPMImage(width, height, maxColorVal, negatedArr);
}

neg(maxColorVal) 函数定义如下:

public void neg(int maxColorVal) 
{
    R = maxColorVal - R;
    G = maxColorVal - G;
    B = maxColorVal - B;
}

当我编译代码时,出现以下错误:

error: incompatible types: inferred type does not conform to upper bound(s)
RGB[] negatedArr = Arrays.stream(negated).parallel().map(rgb -> rgb.neg(maxColorVal)).toArray(size -> new RGB[size]);

inferred: void
upper bound(s): Object

错误指向 map() 函数。我做错了什么?

最佳答案

更正:

您的 map 函数需要一个返回某种引用类型的方法,但是 neg 有一个 void 返回类型。

尝试将您的 neg 方法更改为:

public RGB neg(int maxColorVal) {
    R = maxColorVal - R;
    G = maxColorVal - G;
    B = maxColorVal - B;
    return this;
}

关于java - 推断类型不符合上限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27245994/

相关文章:

java - Box2d 中动态主体为空

java - 如何获取扩展名错误的上传文件的正确文件类型?

java - 收集线程中的值并将其保存到 java 套接字数组中

java - 如何用 Java 8 流替换下面的 for 循环代码

java - 将eclipse升级到java 8

java - 通过类加载器方法创建基于对象类获取的矩阵

java - 如何使用 Google map 客户端 java api 优化 Google map 中的路线。

java - 如何在条件下使用java8流filter()方法?

java - 为什么 Java 8 中的 lambda 表达式要求其内部使用的变量使用 "final"修饰符,但在使用方法引用时却不需要?

Java8 列表。调用空函数