Java 泛型 - 如果调用的方法中不存在类的泛型类型,为什么会出现“不兼容类型”编译错误? [复制]

2024-01-11

请注意,下面的代码无法编译,方法结果分配失败:String s = a.method("abc");.

编译错误:incompatible types: java.lang.Object cannot be converted to java.lang.String

但是,当改变A a to A<?> a or to A<Object> a,编译通过。

* 请注意类型<T>方法与类型不同<O>在课堂里。

知道编译错误是什么吗?另外,为什么变量中的通用定义a编译问题解决了吗?

class A<O>
{
    O something;

    <T> T method(T t)
    {
        return t;
    }

    static void testJavaStrangeGenericDefinitionBehavior()
    {
        A a = null;

        String s = a.method("abc");
    }
}

A a = null;

应该:

A<String> a = null; // or better yet, new A<String>();

虽然,你可以用任何课程代替String因为,正如你所说,T and O泛型是不同的类型。

一旦删除泛型参数,您就会丢失方法调用中的所有泛型,这本质上相当于调用:

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

Java 泛型 - 如果调用的方法中不存在类的泛型类型,为什么会出现“不兼容类型”编译错误? [复制] 的相关文章

随机推荐

  • 使用 perl 和 DBI 将非常大的表从一个 DB2 复制到另一个 DB2

    我每天需要将一个非常大 数百万行 的表从一个 DB2 数据库复制到另一个 DB2 数据库 并且我需要使用 perl 和 DBI 有没有比简单地从第一个数据库中获取每一行并将它们逐一插入到第二个数据库中更快的方法 这是我得到的 sth1 ud
  • 谷歌地图,没有启动导航的选项,只有预览

    在我的应用程序中 我在以下代码集的帮助下启动 Google 导航 String uri http maps google com maps saddr gpsLatitude gpsLongitude daddr updateAccepte
  • OSX Yosemite 升级后 adb(android 调试桥)出现问题

    我昨天将我的 2011 款 13 英寸 Macbook 升级到了 Yosemite 现在我在使用 adb 工具 1 0 31 1 0 32 时遇到问题 例如在设备上安装构建时 通过 ddms 复制文件 从eclipse android st
  • jsplumb 1.4.1 通过 uuid 或对象示例删除Endpoint

    我有一些 div 元素 每个元素有 2 个端点 一个在左侧 一个在右侧 现在我想删除每个右侧端点 每个端点都有自己唯一的 uuid 我得到了右侧端点的每个 uuid 的数组 gt 遍历它们并删除其中的每一个 但这不起作用 谁能给我一个通过
  • 使用内收益回报

    如果我没记错的话 当我在里面使用yield时using SqlConnection阻止我遇到运行时异常 using var connection new SqlConnection connectionString var command
  • 如何在 Java Swing 中显示英镑 (£) 符号?

    目前 我向 Java 源代码添加了英镑 符号 并编译生成的 Swing 组件 显示为方形 不支持的字符 符号 我怀疑这是一个编码问题 Java源文件被编码为cp1252 Eclipse似乎默认是这样 解决这个问题的正确方法是什么 使用 u0
  • PHP 命令行不运行 PHP 文件?

    我目前正在从 Windows 命令提示符处触发 PHP 使用 C xampp php gt php f c Uncrypt php 哪个输出 根据帮助文档 这很奇怪php h 的开关 f should f 解析并执行 但是 这不起作用 PH
  • 为什么 d3 更新整个数据

    我有一个 svg 元素 其数据是这样创建的 var chart d3 select my div append svg var chartData chartData push x 1 y 3 x 2 y 5 chartData push
  • split() 操作后获取 pandas 中唯一的字符串列表

    我正在开始使用熊猫 并且已经较大 DataFrame 中的一列数据例如 0 one two 1 two seven six 2 three one five 3 seven five five eight 4 six four 5 thre
  • 如何在 Windows git-bash 终端上获得彩色输出?

    如何在输出上获得彩色突出显示 e g npm start npm test etc System Windows 10Git 版本 2 16 1 windows 4节点5 6 0 卸载适用于 Windows 10 的 Git Bash 并再
  • 如何将 MultiAutoCompleteTextView 中的结果设置为来自网络源而不是静态或数据库结果?

    我有一个带有 MultiAutoCompleteTextView 的应用程序 我需要将结果设置为来自 Web 源 JSON XML 或任何格式 我该如何执行该操作 或者更清楚地了解当我创建自己的自定义适配器时需要更改什么自动完成 好吧 我在
  • 列表结果集

    我想将 JSP 页面中的结果集转换为列表 并想要显示所有值 这是我的查询 SELECT userId userName FROM user 我已经使用它执行了准备好的声明并得到了结果集 但如何将其转换为List并想像这样显示结果 userI
  • 我可以使用 CDN 中的 ES 模块库吗?

    我想通过 CDN 使用这个库 https www jsdelivr com package npm lit element https www jsdelivr com package npm lit element 我的js代码在这里 i
  • 我自己的 Angular Material ui 风格

    Material ui 我想定制它 不幸的是 我自己的样式被框架样式覆盖了 例如 当我声明 md toolbar 的样式时 md toolbar background red 该声明被材料覆盖 我添加了 important指令它有帮助 但我
  • conda env 在幕后做了什么?

    搜索后没有找到 我必须在这里问 如何conda env在幕后工作 这意味着 anaconda 如何处理环境 为了澄清 我想要一个答案或参考以下问题 里面保存的是什么envs myenv folder 发生了什么activate myenv
  • awk 脚本和 for 循环

    我有一个数据集t txt 827 819 830 826 828 752 752 694 828 728 821 701 724 708 826 842 719 713 764 783 812 820 829 696 697 849 840
  • SVD算法实现

    有谁知道 C 上 SVD 对于非常大的矩阵的良好可扩展实现吗 ILNumerics net http ilnumerics net 似乎有 SVD 除其他外 功能列表 http ilnumerics net main php site 21
  • 从不同项目调用 Partial View

    在项目中我正在使用这段代码 Html Partial ReferenceChangeLog ReferenceChangeLogPopUp 用于调用控制器和操作 这里ReferenceChangeLog是控制器名称 ReferenceCha
  • rpart 树中的标签错误

    在 R 中使用 rpart 时遇到一些标签问题 这是我的情况 我正在处理带有分类变量的数据集 这是我的数据的摘录 head Dataset Entity IL CP TD Budget 2 1 3 2 250 5 2 2 1 663 6 1
  • Java 泛型 - 如果调用的方法中不存在类的泛型类型,为什么会出现“不兼容类型”编译错误? [复制]

    这个问题在这里已经有答案了 请注意 下面的代码无法编译 方法结果分配失败 String s a method abc 编译错误 incompatible types java lang Object cannot be converted