Я делаю класс сцены, для которого я хотел бы еще не определенный тип переменной.
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;
}
Simulation1 и Simulation2 . очень разные пользовательские классы, но они имеют некоторые общие имена функций. Например, они оба имеют функции init (), deleteRandomParticles () и другие. Это означает, что в моем основном коде я могу позвонить:
scene.simulation.init();
scene.simulation.deleteRandomParticles();
Я считаю это очень практичным, но я не могу найти способ заставить класс сцены работать таким образом.
full решение:
class Scene<T extends SceneInterface> {
T simulation;
Scene(T simulation) {
this.simulation = simulation;
}
}
interface SceneInterface {
public void init();
public void deleteRandomParticles();
}
и убедитесь, что это есть в ваших классах симуляции:
class Simulation1 implements SceneInterface{
}