在switch语句中保存未知子类的变量

时间:2016-04-21 00:21:24

标签: java inheritance scope subclass superclass

我有一个超类TetrisPiece,每个变体都有子类,即

class PieceI extends TetrisPiece{
}

class PieceJ extends TetrisPiece{
}

etc...

在另一个类中,我有一个基于随机数的switch语句,它创建一个随机片段

switch(rand){
      //I
      case 1: {
       PieceI pieceI = new PieceI();
       break;
      }
      //T
      case 2: {
       PieceT pieceT = new PieceT();
       break;
      }
      etc...
      default:
       break;
}

我的目的是提取从switch语句范围生成的片段,以便稍后在课堂上使用它。

由于范围问题,切换方法显然不起作用,我无法在switch语句之外创建超类数组,因为我无法通过随机化来转换索引。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

创建超类TetrisPiece的一个实例,然后在switch语句中为它分配PieceT,PieceI等。

TetrisPiece piece;

switch(rand){
  //I
  case 1: {
   piece = new PieceI();
   break;
  }
  //T
  case 2: {
   piece = new PieceT();
   break;
  }
  etc...
  default:
   break;
}