当前位置: 首页 > 面试题库 >

枚举和枚举之间的区别?

哈烨熠
2023-03-14
问题内容

Enumeration <有区别吗?扩展ZipEntry>和Enumeration ?如果是这样,有什么区别?


问题答案:

拥有其中一种后,您在做什么上没有实际差异,因为type参数仅在“输出”位置使用。另一方面,在您可以 用作 其中一个的方面有很大的不同。

假设您有一个Enumeration<JarEntry>-您无法将其传递给Enumeration<ZipEntry>作为其参数之一的方法。您 可以
将其传递给采用方法Enumeration<? extends ZipEntry>

当您有一个在输入和输出位置都使用type参数的类型时,这会更有趣-
List<T>这是最明显的例子。这是参数有变化的方法的三个示例。在每种情况下,我们都会尝试从列表中获取一项,然后添加另一项。

// Very strict - only a genuine List<T> will do
public void Foo(List<T> list)
{
    T element = list.get(0); // Valid
    list.add(element); // Valid
}

// Lax in one way: allows any List that's a List of a type
// derived from T.
public void Foo(List<? extends T> list)
{
    T element = list.get(0); // Valid
     // Invalid - this could be a list of a different type.
     // We don't want to add an Object to a List<String>
    list.add(element);   
}

// Lax in the other way: allows any List that's a List of a type
// upwards in T's inheritance hierarchy
public void Foo(List<? super T> list)
{
    // Invalid - we could be asking a List<Object> for a String.
    T element = list.get(0);
    // Valid (assuming we get the element from somewhere)
    // the list must accept a new element of type T
    list.add(element);
}

有关更多详细信息,请阅读:

  • Java语言泛型指南
  • Java泛型教程(PDF)
  • Java泛型常见问题解答 -特别是有关通配符的部分


 类似资料:
  • 问题内容: 枚举具有获取枚举常量的方法,并且在具有 我发现的名称的类中存在的相同类型的方法都给出相同的输出。那还有什么其他区别。如果没有区别,那么为什么要添加JSL ? 问题答案: 包括该方法的原因是它可以与任何方法一起使用。相比之下, 用于特定方法的方法仅适用于该特定方法…,因为类不能被多态使用。 显然,该方法仅在您实现 需要 针对多种类型使用的代码的情况下才真正有用……而泛型则不会削减它。

  • 谁能解释一下 和 我经常使用前一个示例(可能太频繁了,没有足够的封装),但我从未使用过第二个示例。 谢啦 枚举

  • Spring 3.x、JPA 2.0、Hibernate 4.x、Postgresql 9.x. 使用希望映射到Postgresql枚举的枚举属性处理Hibernate映射类。 使用枚举列上的where子句进行查询会引发异常。 SQL: Hibernate xml查询: > 按而不是按枚举查询工作正常。 没有数据库交互的Java工作良好: 不是,与和相同,异常更改为: 在查看https://sta

  • 问题内容: 背景 Spring 3.x,JPA 2.0,Hibernate 4.x,Postgresql 9.x. 使用我想映射到Postgresql枚举的enum属性在Hibernate映射的类上工作。 问题 用enum列上的where子句查询会引发异常。 代码(大大简化) SQL: Hibernate映射类: 调用查询的Java: Hibernate xml查询: 故障排除 按查询而不是枚举按

  • 问题内容: 这不是卡住我的问题,而是我正在寻找一种编写代码的整洁方法。 本质上,我正在编写一个事件驱动的应用程序。用户触发一个事件,该事件被发送到适当的对象,然后这些对象处理事件。现在,我正在编写偶数处理程序方法,并且希望使用switch语句确定如何处理事件。现在,在我研究通用结构时,事件类非常简单: 然后,在另一堂课中,我会看到类似以下内容的内容: 我会 喜欢 做的就是这样的事情(尽管我当然会坚

  • 问题内容: 这两个接口之间的确切区别是什么?是否有过使用效益?如果有人可以详细说明,将不胜感激。 问题答案: 查看该接口的Java API规范,对以下两者之间的区别进行了说明: 迭代器与枚举有以下两种不同: 迭代器允许调用者在迭代期间使用定义明确的语义从基础集合中删除元素。 方法名称已得到改进。 底线是,既和会给连续元素,但以这样的方式得到改善,从而该方法名是短,并且具有附加的方法。这是一个并排比