2013-03-13 3 views
3

Сценарий заключается в том, что я передаю объект в качестве параметра в методе, и я хочу выполнять операции, основанные на типе этого объекта в методе.Есть ли способ узнать тип объекта?

Пример кода:

method(Object object){ 

//if object== String type print string 
} 
+0

Если вы хотите иметь чек с типами объектов, которые у вас есть, вы можете использовать ключевое слово "instanceOf". –

ответ

4

Попробуйте

if (object.getClass().getName().equals("Class1Name")) 
    //do something. 

Преимущество getClass вместо instanceof является то, что вам не нужно знать тип класса во время компиляции.

+0

Прохладный, поэтому вы можете сделать метод, который получает как объект, так и строку имени класса, чтобы иметь еще большую гибкость! – npace

6

Использование InstanceOf ключевого слова. Ключевое слово instanceOf в языке Java-программирования - это логический оператор, который используется для проверки того, является ли объект заданным типом или нет, и соответственно возвращает значение.

if(object instanceof String) { 

} 
+0

Спасибо, я пробовал этот метод раньше, но в моем случае много сравнений будет иметь место, и мне нравится его избегать. Я имею в виду, если у меня есть 20 типов объектов, то я должен проверить их все. Любой другой способ напрямую знать тип входящего объекта. – Abx

0

оператор Использование InstanceOf для проверки типа и брось соответственно

0

Вы можете использовать ключевое слово instanceof. Будьте предупреждены; это, как правило, не является хорошей практикой, если вы абсолютно не уверены в том, какой тип Object вы пройдете.

1

Вы можете использовать оператор instanceof в java.

Пожалуйста, проверьте сильфона ссылку

Click here for an example

0

Хорошая практика использует полиморфизм ..

Где вы есть родительский класс, который имеет свойство, представлять который childType это,

class Parent { string type; public string getType() { return type; } } 

class ChildA extends Parent { ChildA() { type = "ChildA"; } 

class ChildB extends Parent { ChildB() { type = "ChildB"; } 

public void function (Parent p) 
{ 
    if (p.getType() == "ChildA") 
    { 
     // A 
    } 
    else if (p.getType == "ChildB") 
    { 
     // B 
    } 
} 
0

Если вы планируете только что-то напечатать, вы можете использовать метод toString(), который будет переопределяться для каждого типа объект;)

просто использовать что-то вроде кода сильфона, и пусть каждый класс имеет различный ToString() метод:

method(Object object){ 
    // ... object.toString(); 
} 
1

Если вы хотите method реагировать по-разному в зависимости от параметра, вы должны перегрузить его

public void method(String s) { 
} 

public void method(Integer i) { 

} 

public void method(SomeClass o) { 

} 
0

Я думаю, что вы можете использовать метод getclass().

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