小编zer*_*oed的帖子

通过其内部领域获得枚举

有内场,地图的枚举.

现在我需要通过其内部领域获得枚举.

写道:

package test;

/**
 * Test enum to test enum =)
 */
public enum TestEnum {
    ONE(1), TWO(2), THREE(3);

    private int number;

    TestEnum(int number) {
        this.number = number;
    }      

    public TestEnum findByKey(int i) {
        TestEnum[] testEnums = TestEnum.values();
        for (TestEnum testEnum : testEnums) {
            if (testEnum.number == i) {
                return testEnum;
            }
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是每次我需要找到合适的实例时,查看所有枚举并不是非常有效.

有没有其他方法可以做同样的事情?

java enums

32
推荐指数
2
解决办法
2万
查看次数

为什么LinkedHashSet <E>扩展HashSet <e>并实现Set <E>

今天打开了LinkedHashSet源代码,发现了一些有趣的事情:

public class LinkedHashSet<E>
    extends HashSet<E>
    implements Set<E>, Cloneable, java.io.Serializable {
Run Code Online (Sandbox Code Playgroud)

问题是:当HashSet已经是Set时,为什么他们需要"extends HashSet"和"implements Set"?

java collections hashtable

26
推荐指数
2
解决办法
4324
查看次数

帮助理解受保护方法的问题

我正在阅读Sybex Complete Java 2认证学习指南2005年4月(ISBN0782144195).本书适用于想要通过java认证的java开发人员.

在关于访问修饰符(以及其他修饰符)的章节之后,我发现了以下问题(#17):

对或错:如果类Y扩展了类X,那么这两个类在不同的包中,并且类X有一个名为abby()的受保护方法,那么Y的任何实例都可以调用Y的任何其他实例的abby()方法.

这个问题让我有点困惑.

据我所知,你可以在同一个类(或子类)的任何变量上调用protected方法.您不能在变量上调用它,层次结构中的变量比您更高(例如,您实现的接口).

例如,您不能仅仅因为继承它而克隆任何对象.

但问题没有提到变量类型,只涉及实例类型.

我有点困惑,回答"真实".

书中的答案是

假.从不同包中的超类继承受保护方法的对象可以在自身上调用该方法,但不能在同一类的其他实例上调用该方法.

这里没有关于变量类型的内容,只有实例类型.

这很奇怪,我不明白.

谁能解释一下这里发生了什么?

java protected certificate access-modifiers

9
推荐指数
1
解决办法
663
查看次数