JAVA基礎編-初識列挙
2962 ワード
面接官は「列挙はインタフェースですか、それともクラスですか」と聞きました.答:列挙は識別クラスであり、列挙自体はjavaから継承される.lang.Enum.
面接官は、デフォルトではどのような静的方法が提供されていますか?答え:1.name();//列挙の名前2を取得する.ordinal();//列挙リストに列挙するインデックス番号の取得は0から3.valueOf();//名前による列挙
面接官質問:列挙はシーケンス化と逆シーケンス化をサポートしますか?答:サポート.
面接官は「列挙とインタフェースの違いは?答え:列挙には複数のパラメータを持つ構造があり、列挙にはクラスの特性があり、インタフェースにはありません.
面接官は、列挙は反射によって列挙対象を作成しますか?A:いいえ、JAVAのConstructor#newInstance(Object...initargsには制約があります.列挙により単一のモードを実現し、安全性を保証できます.
面接官はJDKでの応用をいくつか列挙しますか?答え:EnumMap,EnumSet.
面接官は、列挙はどのようなデザインモデルに適用できますか?答え:単例モード、戦略モード、工場モード.
面接官は「列挙はクラスである以上、継承できますか」と聞きました.答:列挙は継承されず、コンパイルは許可されません.
工場モードコードの例を列挙します.
実装されたポリシー・モード・コードの例を列挙します.
単一のパターンコードの例を列挙します.
// Class
public final enum Level extends java/lang/Enum {
}
System.out.println(Level.class.getSuperclass());// class java.lang.Enum
面接官は、デフォルトではどのような静的方法が提供されていますか?答え:1.name();//列挙の名前2を取得する.ordinal();//列挙リストに列挙するインデックス番号の取得は0から3.valueOf();//名前による列挙
面接官質問:列挙はシーケンス化と逆シーケンス化をサポートしますか?答:サポート.
面接官は「列挙とインタフェースの違いは?答え:列挙には複数のパラメータを持つ構造があり、列挙にはクラスの特性があり、インタフェースにはありません.
面接官は、列挙は反射によって列挙対象を作成しますか?A:いいえ、JAVAのConstructor#newInstance(Object...initargsには制約があります.列挙により単一のモードを実現し、安全性を保証できます.
if ((clazz.getModifiers() & Modifier.ENUM) != 0)
throw new IllegalArgumentException("Cannot reflectively create enum objects");
面接官はJDKでの応用をいくつか列挙しますか?答え:EnumMap,EnumSet.
面接官は、列挙はどのようなデザインモデルに適用できますか?答え:単例モード、戦略モード、工場モード.
面接官は「列挙はクラスである以上、継承できますか」と聞きました.答:列挙は継承されず、コンパイルは許可されません.
工場モードコードの例を列挙します.
public enum EnumFactory {
BUICK {
@Override
public Car build() {
return new BUICKCar();
}
},
CADILAC {
@Override
public Car build() {
return new CADILACCar();
}
},
CHEVY {
@Override
public Car build() {
return new CHEVYCar();
}
};
protected abstract Car build();
interface Car {
/**
*
*
* @return
*/
String brandDesc();
}
class BUICKCar implements Car {
@Override
public String brandDesc() {
return " ";
}
}
class CADILACCar implements Car {
@Override
public String brandDesc() {
return " ";
}
}
class CHEVYCar implements Car {
@Override
public String brandDesc() {
return " ";
}
}
}
実装されたポリシー・モード・コードの例を列挙します.
public enum Strategy
{
ONE(" ①",new ONE()),
TWO(" ②",new TWO());
//
IStrategy st;
Strategy(IStrategy st){
this.st=st;
}
// Strategy
public IStrategy getStrategy(){
return st;
}
}
単一のパターンコードの例を列挙します.
public enum Singleton {
INSTANCE(new SingletonObject());
private SingletonObject singletonObject;
Singleton(SingletonObject singletonObject){
this.singletonObject=singletonObject;
}
public SingletonObject getSingletonObject() {
return singletonObject;
}
private static class SingletonObject{
public String getName(){
return " !";
}
}
public static void main(String[] args) {
System.out.println(Singleton.INSTANCE.getSingletonObject().getName());
System.out.println(Singleton.INSTANCE.getSingletonObject());
System.out.println(Singleton.INSTANCE.getSingletonObject());
}
}