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

Saving variable of unknown subclass type in switch statement

我有一个超级class 俄罗斯方块,每个版本都有子class,即

class PieceI extends TetrisPiece{
}

class PieceJ extends TetrisPiece{
}

etc...

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

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

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

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

感谢任何帮助。

创建超类 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;
}