创建可以包含任何类型的一个变量的 Java Class

Creating Java Class that can contain one variable of any type

我正在制作一个场景 class,我想要一个 尚未定义 变量类型。

class Scene {
 int fps = 60;
 float duration;
 // one instance of any variable type (another class)
}

有时我希望使用 :

构建场景
class Scene {
 int fps = 60;
 float duration;
 Simulation1 simulation;
}

其他时候我希望使用

构建场景
class Scene {
 int fps = 60;
 float duration;
 Simulation2 simulation;
}

Simulation1Simulation2 都是两个非常不同的自定义 classes 但它们有一些共同的函数名称。例如,它们都有名为 init()、deleteRandomParticles() 等的函数。这意味着在我的主要代码中我可以调用 :

scene.simulation.init();
scene.simulation.deleteRandomParticles();

我觉得这很实用,但我找不到让场景 class 这样工作的方法。

完整解决方案:

class Scene<T extends SceneInterface> {
 T simulation;

 Scene(T simulation) { 
  this.simulation = simulation; 
 }   
}

interface SceneInterface {
 public void init();
 public void deleteRandomParticles();
}

并确保在你的模拟中有这个 classes :

class Simulation1 implements SceneInterface{
}

选项 1:Object.

class Scene {
 int fps = 60;
 float duration;
 Object simulation;
}

选项 2:Simulation1Simulation2 都实现的 Simulation 接口。

class Scene {
 int fps = 60;
 float duration;
 ISimulation simulation;
}

选项 3:通用类型 T

class Scene<T> {
 int fps = 60;
 float duration;
 T simulation;
}

您似乎在寻找泛型,它是 angular 括号中的东西,例如 List<String>。另外,如果你的模拟 类 有共同的方法,我会制作一个模拟接口并让模拟 1 和 2 实现它。您可以像这样使泛型扩展接口:class Scene<T extends Simulation> 然后使用类型 T 就好像它是像 String 这样的变量类型。