2015-04-19 8 views
0

Я хочу проверить, является ли объект экземпляром класса объектов.Object instanceof Object

public Stack<Object> getObject(int x, int y, int x2, int y2, Object type, Stats stats){ 
    Stack<Object> ob = new Stack<Object>(); 
    for(Object o : stats.map){ 

     if(o instanceof type.getClass()){//Not working 

      if((!((o.x < x && o.x < x2) || (o.x * o.size > x && o.x * o.size > x2)) && 
       !((o.y < y && o.y < y2) || (o.y * o.size > y && o.y * o.size > y2)))){ 
       ob.push(o); 
      } 
     } 
    } 
    return ob; 
} 

Я сделал несколько классов, которые exctends других классов:

(дерево, железный, камень) расширяет Resouce расширяет объект

Человек распространяется объект

  • Если type.getClass () = Ресурс: Дерево, железо и камень должны возвращать истину.
  • Если type.getClass() = Дерево: дерево должно возвращать true, а Iron и Stone должны возвращать false.
+3

Myself, я бы попытаться изменить дизайн моего кода, так что это запутано и код пахнущие InstanceOf не требуется. Возможно, вы хотите использовать шаблон дизайна посетителя (не уверен). –

ответ

2

Вы не можете использовать instanceof с Class объектами.

Вы можете проверить это с помощью:

type.getClass().isInstance(o) 
-2

Вы можете использовать

if(o.getClass() instanceof type.getClass()){ 
+0

Нет, у нас не может быть 'instanceof type.getClass()'. Пожалуйста, проверьте свой ответ, прежде чем отправлять его. Это не гонка (как многие полагают). – Pshemo

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