Java 从变量类型类访问方法

Java 从变量类型类访问方法,java,android,class,physics-engine,Java,Android,Class,Physics Engine,所以我正在为我正在创建的应用程序创建我自己的物理引擎。目前,我有一个StaticObject类,用于不模拟每个游戏滴答声的简单对象,还有一个DynamicObject类,用于与重力和碰撞等相关的对象。接下来,我将创建一个约束类来创建这些不同对象之间的链接,比如使这个dynamicObject与这个staticObject保持在相同的位置 好的,我试图从约束类访问对象类StaticObject或DynamicObject中的一些方法和值,但是我访问的特定类型/类是可变的。它可以是StaticObj

所以我正在为我正在创建的应用程序创建我自己的物理引擎。目前,我有一个StaticObject类,用于不模拟每个游戏滴答声的简单对象,还有一个DynamicObject类,用于与重力和碰撞等相关的对象。接下来,我将创建一个约束类来创建这些不同对象之间的链接,比如使这个dynamicObject与这个staticObject保持在相同的位置

好的,我试图从约束类访问对象类StaticObject或DynamicObject中的一些方法和值,但是我访问的特定类型/类是可变的。它可以是StaticObject类型,也可以是DynamicObject类型

这是一个需要访问对象类或“变量类型类”的类。我不知道这里的正确术语,但我想知道,java在这方面有点新:

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集合中使用的更多信息。