Java で列挙型をネストする必要があります。ただし、Stackoverflow とより大きな Web を見回すと、ネストされた列挙型とは何かに関する一般的な規則がないように見えます。さまざまな解釈を見てきましたが、私のニーズに合ったものはありません。
それでは、私の要件について説明することから始めましょう。
命名規則を許可する列挙型と、Java アプリケーションのイベント型の単純なツリー型構造が必要です。例えば
Event.Draw.Square;
Event.Draw.Circle;
Event.Draw.Triangle;
Event.Draw.Poly;
Event.Draw.Line;
Event.File.Load;
Event.File.Save;
Event.Screen.Zoom;
Event.Screen.Flip;
Event.Ui.New;
Event.Ui.Close;
これをコードでどのように想定するかは次のとおりですが、明らかに正しくありません。列挙型でこれを取得する方法についての指針はありますか?
private enum event
{
Draw {Square, Circle, Triangle, Poly, Line},
File {Save, Save_As, Load},
Screen {Zoom, Flip, Rotate_CW, Rotate_CCW},
Ui {New_Workspace, Close}
}
次に、ケース ステートメントまたは条件付き構造が、Event.Screen や Event.Screen.Zoom などに基づいて動作できるようにしたいと考えています。たとえば、次のメソッドを参照してください。
public void evenTriggered(Event event)
{
switch (event)
{
case Event.Draw:
drawEvent(event.Draw);
case Event.UI:
uiEvent(event.Ui);
case Event.Screen:
screenEvent(event.Screen);
case Event.File
fileEvent(event.File);
default: ;//do nothing
}//end switch
}//end eventTriggered
public void drawEvent(Event.Draw event)
{
switch(event.draw)
{
case Event.Draw.Square:
workspace.addSquare();
break;
case Event.Draw.Circle:
workspace.addCircle();
break;
case Event.Draw.Triange:
workspace.addTriangle();
break;
default: ;//do nothing
};//end switch
}//end drawEvent
私の投稿を読んでくれてありがとう。あなたの提案を楽しみにしています。
アンドリュー。