Java 从变量类型类访问方法
所以我正在为我正在创建的应用程序创建我自己的物理引擎。目前,我有一个StaticObject类,用于不模拟每个游戏滴答声的简单对象,还有一个DynamicObject类,用于与重力和碰撞等相关的对象。接下来,我将创建一个约束类来创建这些不同对象之间的链接,比如使这个dynamicObject与这个staticObject保持在相同的位置 好的,我试图从约束类访问对象类StaticObject或DynamicObject中的一些方法和值,但是我访问的特定类型/类是可变的。它可以是StaticObject类型,也可以是DynamicObject类型 这是一个需要访问对象类或“变量类型类”的类。我不知道这里的正确术语,但我想知道,java在这方面有点新:Java 从变量类型类访问方法,java,android,class,physics-engine,Java,Android,Class,Physics Engine,所以我正在为我正在创建的应用程序创建我自己的物理引擎。目前,我有一个StaticObject类,用于不模拟每个游戏滴答声的简单对象,还有一个DynamicObject类,用于与重力和碰撞等相关的对象。接下来,我将创建一个约束类来创建这些不同对象之间的链接,比如使这个dynamicObject与这个staticObject保持在相同的位置 好的,我试图从约束类访问对象类StaticObject或DynamicObject中的一些方法和值,但是我访问的特定类型/类是可变的。它可以是StaticObj
public class Constraint<objectType1, objectType2> {
private Class<objectType1> object1;
private Class<objectType2> object2;
public Constraint(Class<objectType1> object1, Class<objectType2> object2) {
this.object1 = object1;
this.object2 = object2;
}
public void update() {
object2.position = object1.position;
}
}
我可以肯定地知道,无论对象是StaticObject还是DynamicObject,它们都有attributeobject.position`
因此,我的问题归结为:如何确定变量类的类型是正确的StaticObject或DynamicObject,然后如何访问类中的方法和变量,而不考虑类型?我的方向对吗?如果没有,我可以学习什么更好的方法
请举例,这对我来说是新鲜事 你可以混合使用 这里的超类用作具有StaticObject和DynamicObject的公共属性的类 泛型类约束可以接受扩展这个超类的任何类型 除此之外,在执行特定于这两个类之一的任何操作之前,您可以使用instaceof运算符检查类型是StaticObject还是DynamicObject 我希望这个例子能让你明白你想要实现什么
class SuperClass{
private int position;
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
}
class StaticObject extends SuperClass{
StaticObject(int position){
setPosition(position);
}
}
class DynamicObject extends SuperClass{
DynamicObject(int position){
setPosition(position);
}
}
public class Constraint<T1 extends SuperClass, T2 extends SuperClass> {
private T1 object1;
private T2 object2;
public Constraint(T1 object1, T2 object2) {
this.object1 = object1;
this.object2 = object2;
}
public void update() {
object2.setPosition(object1.getPosition());
}
public static void main(String[] args) {
Constraint<StaticObject, DynamicObject> c = new Constraint<StaticObject, DynamicObject>(new StaticObject(2), new DynamicObject(5));
c.update();
}
}
那么,泛型是变量类型的东西吗?是的,在某些方面是这样的。了解有关泛型如何在Java集合中使用的更多信息。