2015-05-29 4 views
1

По существу, что я хочу сделать, это передать класс в качестве параметра, чтобы я мог выполнить сравнение instanceof.Java - класс пропуска в качестве параметра для сравнения

public class MyClass 
{ 
    Object o = something; 

    public void myMethod(Class c) 
    { 
     if(o instanceof c) 
     { 
      do something 
     } 
    } 
} 

Если параметр Class c является любой класс, который я выбираю, чтобы пройти в другом месте, где с. По сути, я хочу иметь возможность проходить в любом классе и сравнивать.

Любая помощь будет оценена по достоинству.

Благодаря

+0

Я не думаю, что вы можете передать любой класс в этом методе. Потому что сейчас метод принимает только объекты типа Class. Я думаю, вы должны передать объект, потому что это корень всех классов. – Mnemonics

+0

Когда я говорю Class c, я имею в виду практически любой класс. Это может быть String, Integer или пользовательский класс. – Tikaji

+0

вот почему вы должны передать объект. У Эдуардо есть ответ для вас. – Mnemonics

ответ

2

Вы можете позвонить Class#isInstance(Object obj):

if(c.isInstance(o)) { 

Определяет, является ли указанный Object является назначение совместимым с объекта, представленного этим Class. Этот метод является динамическим эквивалентом языка Java instanceof Оператор.

+0

Он хочет передать любой тип класса внутри параметра. Это не решение. – Mnemonics

+0

@Mnemonics OP хочет передать объект класса, а не экземпляр объекта. Это две разные вещи. – manouti

+1

На самом деле это работало именно так, как я хочу. Быстрый ответ очень ценен. – Tikaji

1

Просто дайте метод принять Object. В Java все классы распространяются от Object.

public class MyClass 
{ 
    Object o = something; 

    public void myMethod(Object c) 
    { 
     if(o.isInstance(c)) 
     { 
      do something 
     } 
    } 
} 
+0

Это должен быть правильный способ сделать это. – aLarsson

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