为什么是谓词<? super SomeClass> 不适用于对象?

2024-03-09

假设我们有一个谓词声明为Predicate<? super SomeClass>。我天真地期望它适用于任何超类SomeClass向上的层次结构,包括Object.

然而这个谓词不适用于Object。我收到以下错误:

Predicate 类型中的方法 test(capture#3-of ? super SomeClass) 不适用于参数 (Object)

Demo https://ideone.com/pTxzvl.

Why is Predicate<? super SomeClass>不适用于以下实例Object?

代码:

import java.util.*;
import java.lang.*;
import java.io.*;
import java.net.URL;
import java.util.function.Predicate;


/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        Predicate<? super URL> p = u -> u.getFile().isEmpty();
        p.test(new Object());
    }
}

For a Predicate<? super SomeClass>变量,您可以分配一个Predicate<SomeClass>实例,或Predicate<Object>实例。

但是,您不能通过Object to the test()的方法Predicate<SomeClass>。你只能通过一个SomeClass实例。

因此你不能通过Object to the test()的方法Predicate<? super SomeClass>

考虑以下:

Predicate<URL> p1 = u -> u.getFile().isEmpty();
Predicate<? super URL> p2 = p1;

p2指的是Predicate<URL>,所以你不能通过new Object() to its test() method.

换句话说,为了p.test(new Object())要被编译器接受,它必须有效any Predicate可以分配给Predicate<? super URL> p多变的。自从Predicate<URL> Predicate可以分配给该变量,并且它的test() method cannot接受一个Object, p.test(new Object())不能被编译器接受。

顺便说一句,在您的具体示例中,您正在创建一个Predicate<URL>, and URL是最后一堂课。因此,您应该简单地将其声明为:

Predicate<URL> p = u -> u.getFile().isEmpty();

没有理由? super or ? extends.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么是谓词<? super SomeClass> 不适用于对象? 的相关文章

  • Java 7 watchservice获取文件更改偏移量

    我刚刚尝试使用 Java 7 WatchService 来监视文件的更改 这是我敲出的一些代码 WatchService watcher FileSystems getDefault newWatchService Path path Pa
  • Cassandra Pojo Sink Flink 中的动态表名称

    我是 Apache Flink 的新手 我正在使用 Pojo Sink 将数据加载到 Cassandra 中 现在 我在以下命令的帮助下指定表和键空间名称 Table注解 现在 我想在运行时动态传递表名称和键空间名称 以便可以将数据加载到用
  • 在 Java 中实现排列算法的技巧

    作为学校项目的一部分 我需要编写一个函数 该函数将接受整数 N 并返回数组 0 1 N 1 的每个排列的二维数组 该声明看起来像 public static int permutations int N 该算法描述于http www usn
  • 为什么这不会绘制图像?

    我想做的是 当我运行应用程序时 它会启动线程并且图像显示 3 秒 3000 毫秒 然后线程停止运行 图片路径正确 图片文件存在 线程本身运行 但是 图像似乎没有显示 可能出什么问题了 这是我的代码 package org main impo
  • Java Swing透明JPanel问题

    我有一个 JLayeredPane 其中添加了 3 个 JPanel 我将 JPanel 设为透明 未设置背景并 setOpaque false 我在 JPanel 上绘制线条 只有最后添加的 JPanel 上的线条可见 其他 JPanel
  • 如何在 Java 9 中使用新的 BeanInfo 注解

    JEP 256 BeanInfo 注释 http openjdk java net jeps 256为JavaBean http download java net java jdk9 docs api java beans JavaBea
  • iText7:如何获取段落的实际宽度

    在添加到文档之前 我需要知道段落的宽度 以磅为单位 我在这里搜索并找到了 Alexey 关于段落高度的答案 所以我用宽度做了它 但它不起作用 无论段落有多长 始终返回矩形的宽度 我尝试了这段代码 private float getRealP
  • 如何将 Excel 中的图表导出为图形

    我有一系列 Excel 电子表格 每个电子表格至少包含一页数据和一页根据数据创建的图表 我需要捕获 不从数据中重新生成 将现有图表作为网络友好图像 这可以通过 Java 或 Net 实现吗 我知道 POI 的东西 Java 不会这样做 或者
  • javax.naming.NameNotFoundException

    我正在 JBoss 5 容器中运行 ejb 示例 我正在使用一个例子从这里开始 第一部分 http www roseindia net jboss jboss 3 2 shtml 在示例中 我在 JBoss 中部署了 bean 并在 Tom
  • 如何找出已使用的 JAR?

    在更大的项目中 我们可能会使用大量的 JAR 如何找出项目 而不是整个项目 中的某个模块 包正在使用哪些 JAR 有什么工具 技术等吗 较大的项目通常使用类似的构建工具maven http maven apache org or ant h
  • 当目标是属性时,@Throws 不起作用

    在看的同时这个问题 https stackoverflow com q 47737288 7366707 我注意到申请 Throws to a get or setuse site 没有影响 此外 唯一有效的目标 for Throws ar
  • 关于java中同步的问题;何时/如何/到什么程度

    我正在开发我的第一个多线程程序 并在同步的几个方面陷入困境 我已经浏览了 oracle sun 主页上的多线程教程 以及这里的一些关于 SO 的问题 所以我相信我知道什么是同步 然而 正如我提到的 有几个方面我不太确定如何弄清楚 我以明确问
  • 清理 IntelliJ 中构建的 Play 框架

    我有一个拼写错误conf routes文件导致 Play Framework 生成错误命名的类 重建项目并运行Invalidate Caches并没有解决 IntelliJ 中的问题 当我手动运行时重新生成了不正确的类文件play clea
  • 飞碟中的外部 CSS

    我想知道如何在 Flying Saucer 中包含外部 CSS 在此之前THB我检查了所有可用的链接StackOverflow但它们没有帮助 这就是为什么我自己做这个的原因 TestCSS xhtml重命名版本TestCSS html 所以
  • Android 改造参数化@Headers

    我正在使用 OAuth 每次发出请求时都需要将 OAuth 令牌放入标头中 我看到 Header注释 但是有没有办法让它参数化 以便我可以在运行时传入 这是概念 Header Authorization OAuth var api vers
  • Kotlin 中的枚举类对于 Android 来说是否像 Java 中那样“昂贵”?

    Are EnumKotlin 中的类对于 Android 来说 昂贵 就像 Java 一样 还可以用吗 IntDefs or StringDefs在科特林 当我将 Kotlin Enum 类反编译为 Java 类时 底层仍然使用了 Java
  • 是否可以从 JBoss 容器中部署的所有 .war 文件中读取属性文件

    我已成功将 war 部署到 Jboss Web 容器 其中包含并读取位于 META INF groupid dir artifactid dir 下的 pom properties 为了访问该文件 我在同一 war 中的 JSP 中使用了以
  • Guava MultiSet 与 Map?

    我对Multiset的理解是一个带有频率的集合 但是我总是可以使用Map来表示频率 还有其他原因使用Multiset吗 优点Multiset
  • 如何在非Spring的构造型类中使用@Autowired

    我想在此类中使用该存储库 但是当我放置像 Component 这样的构造型时 我从 IDE 收到错误 无法自动装配 未找到 身份验证 类型的 bean public class CustomMethodSecurityExpressionR
  • POJO 支持使用omnifaces 自动完成primefaces

    我正在尝试在我的项目中使用 primefaces 自动完成组件 以避免将特定转换器写入我尝试使用的每个列表对象全能面孔 http showcase omnifaces org converters ListConverter如建议的here

随机推荐

  • 使用 char * 访问 int 是否可能具有未定义的行为?

    下面用于测试字节顺序的代码预计具有实现定义的行为 int is little endian void int x 1 char p char x return p 1 但它是否有可能在特意设计的架构上具有未定义的行为 例如 表示的第一个字节
  • Javascript找不到这些变量,为什么?

    我正在使用 Phonegap 创建 Android 应用程序 录音机 但我的代码中有以下 2 个错误 ReferenceError Can t find variable Media TypeError Result of expressi
  • 针对 3.5 框架的 VS2010 上的 RESX 文件存在问题

    这是我最近遇到的一个故事和一个可能的答案 我只是想分享这个信息 因为我在 stackoverflow 上还找不到这个信息 我将我的解决方案从 VS2008 WinXP 32 位升级到 VS2010 Win7 64 位 当我对生成新 RESX
  • 将 HTML 文件转换为 PDF [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 Pandas 绘制成子图

    da 是我的数据框 我想把这个图变成我将拥有的 2 个子图中的一个 当我为这个图添加 plt subplots 2 1 2 时 它最终会将该图分成一个单独的图 并且子图是一个空图 我怎样才能把这段代码变成一个子图 Thank you in
  • 它在 php/html 中的输出详细信息不正确

    我想当用户选择时显示下拉菜单中的所有问题All从问题下拉菜单中并将其输出在下面 问题是它没有这样做 更糟糕的是 它给了我未定义的偏移错误 指出 Notice Undefined offset in on line 605 605行是 ech
  • 使用 UWP 通过拖放重新排序可绑定列表视图

    我正在尝试重新排序ListView通过拖放 它在使用静态项目时与我一起工作 但是当我使用绑定数据时物品来源拖动工作正常 但我无法删除该项目 这是我的代码 C lstSrvMenu ItemsSource Menue MainItems Wh
  • 如何使用 JS 删除或重置 CSS 样式?

    我想使用 JS 删除或重置应用于特定 DOM 节点的样式 node style webkitTransitionDuration 5000ms node style webkitTransformOrigin 200px 200px nod
  • 在 Windows 10 (1803) 上,如果 WPF 透明窗口覆盖在所有应用程序上,所有应用程序都会失去触摸或手写笔功能

    如果我使用简单的空窗口 如下面所示的代码 创建一个新的 WPF 应用程序 我发现 WPF 应用程序覆盖的所有应用程序都失去了触摸或手写笔反应 仅当 Windows 10 升级到 1803 10 0 17134 0 时才能重现此情况
  • 使用 Bootstrap 4 的剩余垂直空间

    我想让 id 网格使用完整的可用垂直空间 div class container fluid div class row mb 2 div class col h2 i class fas fa map marker alt i Test
  • Vaadin 的 vaadinBootstrap.js

    我遇到了令人困惑的问题 我正在使用 Vaadin 7 框架来创建一些 安静简单的 应用程序 当我在 Eclipse 中测试它时 一切正常 但是当我将项目部署到 Tomcat 中时 一些谜团开始出现 当我从管理器应用程序 运行 应用程序时 只
  • 查看特定的 Git 提交 [重复]

    这个问题在这里已经有答案了 可能的重复 获取有关 SHA 1 提交对象的信息 https stackoverflow com questions 7610073 get information about a sha 1 commit ob
  • 如何使用 node.js 构建消息以通过 TCP 发送?

    我需要从 Node js TCP 服务器向多个 TCP 客户端发送 JSON 字符串 为了从客户端的套接字 流读取消息 我需要进行某种消息框架 实现此目的的一种方法是将消息长度作为数组作为消息前缀 然后将其转换为客户端消息的缓冲区大小 我如
  • app.use(验证器()); ^ TypeError:验证器不是函数

    我正在开展一个夏季培训项目 我被要求使用以下命令创建一个登录页面Node js但是 安装后express validator并输入我想在的代码app js文件每次运行时都会打印出一个错误app js or the www在 bin 文件中告
  • 在 /youtube/v3/channels 的结果中没有看到 snippet.customUrl

    根据 YouTube 数据 API V3 网址为https developers google com youtube v3 docs channels snippet customUrl https developers google c
  • ember-data 观察记录数组 isLoading/isUpdating/hasUpdated?

    我正在尝试按周显示日历事件列表 更重要的是我正在尝试重用 DS Store 中已有的数据 这是执行此操作的代码 并且在大多数情况下它都有效 问题是我的eventsChanged观察者运行的次数太多了 当路由器从服务器获取事件时eventsC
  • Java中的多个对象锁?

    锁定私有字段变量 而不是使用锁定对象 是否安全 可接受的做法 这样 我就可以为不同的目的使用不同的锁 下面的例子 class Test private Integer x 0 private Integer y 0 public void
  • 在 TableView 中滑动消息时,类似 iMessage 的时间显示

    我正在实现一种方法 让用户在向左滑动任何消息时查看所有消息的时间戳 与 iMessage 的方式类似 source tekrevue com https cdn1 tekrevue com wp content uploads 2014 1
  • 使用 cuda-gdb 检查全局设备内存

    我正在尝试使用 cuda gdb 来检查全局设备内存 即使在 cudaMemcpy 之后 这些值似乎都为零 然而 在内核中 共享内存中的值是好的 任何想法 cuda gdb 甚至检查全局设备内存吗 看来主机内存和设备共享内存都很好 谢谢 假
  • 为什么是谓词<? super SomeClass> 不适用于对象?

    假设我们有一个谓词声明为Predicate