Является экземпляром считается плохой практикой? Если да, то при каких обстоятельствах instanceof по-прежнему предпочтительнее?
на протяжении многих лет, я пытался избежать instanceof
всякий раз, когда это возможно. Использование полиморфизма или шаблона посетителя, где это применимо. Я полагаю, что в некоторых ситуациях это просто облегчает обслуживание... Есть ли еще какие-то недостатки, о которых следует знать?
однако я вижу его здесь и там в библиотеках Java, поэтому я полагаю, что у него есть свое место? При каких обстоятельствах это предпочтительно? Разве это неизбежно?
2 ответов
Я могу представить себе некоторые случаи, например, у вас есть некоторые объекты библиотеки, которые вы не можете расширить (или было бы неудобно делать это), возможно, смешанные с некоторыми объектами Вашего, все с тем же базовым классом, вместе в коллекции.
Я полагаю, что в таком случае использование instanceof для различения некоторой обработки этих объектов может быть полезно.
Idem в некотором обслуживании устаревшего кода, где вы не можете ввести новое поведение во многих старых классах, чтобы добавить новый небольшая функция или исправление ошибок...
это определенно имеет свое место в реализации запаса equals
. Е. Г.
public boolean equals ( Object o )
{
if ( this == o )
{
return true;
}
if ( ! (o instanceof MyClass) )
{
return false;
}
// Compare fields
...
}
одна аккуратная вещь, чтобы знать о instanceof является то, что его LHS может быть null
и в этом случае выражение false
.