Java 将对象视为另一个对象

Java 将对象视为另一个对象,java,object,casting,Java,Object,Casting,首先,我想说的是,这只是一个表面的问题,你们会马上明白的。 我得到了一个对象,我希望从现在开始,在我重新计算它之前,java会将该对象视为另一个对象,而不是我一次又一次地转换它。 例如,我得到了如下结果: Object obj = new SomeObject(); ((SomeObject) obj).someMethod1(); ((SomeObject) obj).someMethod2(); ((SomeObject) obj).someMethod3(); 相反,我想做如下事情: O

首先,我想说的是,这只是一个表面的问题,你们会马上明白的。 我得到了一个对象,我希望从现在开始,在我重新计算它之前,java会将该对象视为另一个对象,而不是我一次又一次地转换它。 例如,我得到了如下结果:

Object obj = new SomeObject();
((SomeObject) obj).someMethod1();
((SomeObject) obj).someMethod2();
((SomeObject) obj).someMethod3();
相反,我想做如下事情:

Object obj = new SomeObject();
obj treatas SomeObject; // This is the line that I dont even know if exist in java
obj.someMethod1();
obj.someMethod2();
obj.someMethod3();

您必须创建一个新变量(或者首先将
obj
声明为
SomeObject
类型):

在更一般的情况下,如果您不确定
obj
SomeObject
的实例:

if (obj instanceof SomeObject) {
    SomeObject sobj = (SomeObject) obj;
    sobj.someMethod1();
    sobj.someMethod2();
    sobj.someMethod3();
}

这就是我一直在寻找的答案,我认为有一种方法可以做到这一点,而不需要创建新的var:\@DanielPrizmant,没有。由于
obj
变量可以保存任何引用类型的对象,因此在未将其强制转换到某个特定类之前,不能使用它引用该类的方法。
if (obj instanceof SomeObject) {
    SomeObject sobj = (SomeObject) obj;
    sobj.someMethod1();
    sobj.someMethod2();
    sobj.someMethod3();
}