问题内容: 我正在尝试在一个抽象类中创建一个抽象方法,该抽象类将自己的Enum作为参数。但是我也希望枚举是通用的。 所以我这样宣布: 在实现中,我列举了一个枚举: 并且方法声明变为: 但是,如果我这样做: 我无法访问并显示错误消息: 我做了这样的解决方法: 但是我想知道是否有可能无法通过我的解决方法? 问题答案: 在您的方法实现中,不是枚举,而是类型参数(通常称为)。因此,它掩盖了与已经说过的ax
问题内容: 谁能告诉我第一和第二代码之间的区别是什么?MaxPQ代表优先级队列,它是可以相互比较的“关键”对象的集合。 代码1: 代码2: 第二个代码没有编译,但是对我来说不直观,为什么在使用泛型时为什么需要扩展而不是实现接口。 问题答案: 区别非常简单:第二个代码段不会编译,也永远不会编译。对于泛型,您始终对类和接口都使用。也可以在此处使用关键字,但是它具有不同的语义。
问题内容: 我已经开始阅读有关Java序列化以及其他语言的一些文章,但是如果我有一个通用类并且想要将其实例保存到文件中该怎么办。 代码示例 保存此类对象的最佳方法是什么?(当然,在我真正的复习课程中还有更多,但我只是想知道实际的想法。) 问题答案: 您 需要照常制作通用类。 如果使用通用类型声明字段,则 可能需要 指定应实现。 请注意此处不常见的Java语法。
问题内容: 对于一个抽象类,我想定义一个为子类返回“ this”的方法: 我希望能够执行以下操作: 可以说香蕉面包会抛出一个IllegalArgumentException消息“不是蛋糕!”。 问题答案: 编辑 要求子类以某种方式表现是没有问题的,这超出了静态类型可以检查的范围。我们一直在这样做-一页又一页的普通英语指定您如何编写子类。 提出的另一种具有协变返回类型的解决方案必须做同样的事情-用简
问题内容: 如果我有一个像这样的抽象类: 还有一些从Item派生的类是这样的: 我不明白为什么我不能使用泛型调用构造函数: 我知道可以有一个没有构造函数的类型,但是这种情况是不可能的,因为Pencil具有没有参数的构造函数,而Item是抽象的。但是我从eclipse中得到了这个错误: 无法实例化 我不明白为什么的 T类型 ,以及如何避免这种情况? 问题答案: 无法使用Java类型系统来强制类层次结
问题内容: 我希望从编译时以及运行时的角度来看,提供正确类型的返回值都不会成为问题。 但是我一定是错的。 编辑: 它不与和。 问题答案: 根据该方法的Javadoc: 实际结果类型为| X | 是擦除其上调用的表达式的静态类型。例如,此代码段中不需要强制转换 在此,您的代码段中的值为,因此只能分配给或。 使用这种特定措辞的原因是因为当您说该变量具有类型T其中where时,可以存在多个扩展的类,因此
问题内容: 以下是有关如何使Java通用类将单个项目附加到数组的代码段。如何使appendToArray成为静态方法。在方法签名中添加static会导致编译错误。 问题答案: 您唯一可以做的就是将您的签名更改为 重要细节: 返回值之前的泛型表达式始终会引入(声明)新的泛型类型变量。 另外,类型()和静态方法()之间的类型变量永远不会相互干扰。 因此,这意味着什么:如果方法不是,则我的答案将隐藏。A
问题内容: 我试图在这样的泛型类中创建一个常规的RuntimeException: 这段代码使我对这个词的错误说法。 这个RuntimeException与我的类通用有什么关系? 问题答案: Java不允许Throwable的通用子类。而且,非静态内部类可以通过其外部类的类型参数有效地进行参数化(请参见Oracle JDK Bug 5086027 )。例如,在您的示例中,内部类的实例具有form类
问题内容: 使用JAXB时,我想在使用泛型时从XML元素中删除多余的名称空间/类型。我该怎么办或我做错了什么?我想使用泛型,这样我只需要编写一次代码块。 示例代码: 输出: 问题答案: 通用测试 您的JAXB(JSR-222)实现将为每个类创建映射(即,不是type(即)。因此,它将字段视为type 。这将导致属性,因为JAXB实现正在添加足够的信息才能解组相同的类型。 演示版 下面是您可以使用的
问题内容: 在Java中,Map接口定义为 为什么不? 我刚遇到一个讨厌的错误,因为使用了错误的类型密钥。我认为泛型的目的是在编译期间及早捕获类型错误。这会达到目的吗? 问题答案: 凯文·布罗里恩(Kevin Bourrillion)不久前就在博客上发表了文章。摘要: 一致地,除非有必要防止集合损坏,否则Java Collections Framework(以及Google Collections
问题内容: 我有一个泛型类。在一种方法中,我想获取的类实例,但我无法调用。 使用它解决问题的首选方法是什么? 问题答案: 简短的答案是,无法找到Java中泛型类型参数的运行时类型。我建议阅读Java教程中有关类型擦除的章节以获取更多详细信息。 一个流行的解决方案是Class将type参数的传递给泛型类型的构造函数,例如
问题内容: 为了减少类的依赖性,我想将参数(使用泛型类)发送到扩展某些类并实现接口的构造函数,例如 可能吗? 此外,使用T类,我想使用T.getActivity()作为Context创建视图。 问题答案: T必须扩展Fragment并实现SomeInterface 在这种情况下,您可以声明以下内容: 这将需要扩展和实现类型的对象。 此外,使用T类,我想使用T.getActivity()作为Cont
问题内容: 这是什么意思,仅表示未指定类型的对象列表吗? 搜寻该字符串不会返回任何有用的信息(: 问题答案: 您需要获取更多信息的关键字是通配符
问题内容: 我想一般地在java中添加数字。我遇到了麻烦,因为Numbers类并不真正支持我想做的事情。到目前为止,我尝试过的是: 显然这是行不通的。我该如何更正此代码,以便获得或列表,或返回任何值? 问题答案: 为了一般地计算总和,您需要提供两个操作: 一种将零项相加的方法 一种将两项相加的方法 在Java中,您可以通过接口进行操作。这是一个完整的示例:
问题内容: 如何创建泛型类型的数组?通用方法如何工作?它返回通用数组的副本。因此可以创建通用数组。但是如何?怎么能写一个类似的方法呢? 问题答案: 如果需要在运行时创建它,则至少需要在此时知道类型,因此可以使用以下方法: where 是泛型类型,是的类,并且是初始大小。 这里的文件