2015-01-04 8 views
3

Сначала я хотел бы сказать, что это вопрос только для косметики, как вы сразу поймете. У меня есть объект, и я хочу, чтобы с этого момента, пока я не обновил его, 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(); 

ответ

4

Вы должны создать новую переменную (или объявить obj чтобы быть SomeObject типа в первую очередь):

Object obj = new SomeObject(); 
SomeObject sobj = (SomeObject) obj; 
sobj.someMethod1(); 
sobj.someMethod2(); 
sobj.someMethod3(); 

И в более общем случае, если вы не знаете наверняка, что obj является п экземпляр SomeObject:

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

Ну это ответ, который я искал, я думал, что есть способ сделать это без создания нового вара: \ –

+0

@DanielPrizmant Ну, нет. Так как переменная 'obj' может содержать объекты любого ссылочного типа, вы не можете использовать ее для ссылки на методы какого-либо определенного класса, не отбрасывая ее в этот класс. – Eran

Смежные вопросы