I have three classes (Carnivore
, Herbivore
, and Plant
) that extend another class (Organism
). How can I tell which subclass an object is a part of? So far I have a property that has the classes' name, but I think it could be possible to use an operator similar to javascript's typeof. (Similar to: Organism typeof Carnivore
)
相关问题
- Delete Messages from a Topic in Apache Kafka
- how to define constructor for Python's new Nam
- Jackson Deserialization not calling deserialize on
- How to maintain order of key-value in DataFrame sa
- StackExchange API - Deserialize Date in JSON Respo
Java has an
instanceof
operator. However, that type of thing can be contrary to object-oriented design.You can use the
instanceof
keyword.Note, however, that needing to use this is often a sign of a bad design. You should typically write method overrides in each of your derived classes so that you don't explicitly need to check which class something is.
objInstance instanceof Carnivore
. Here objInstance is the object you want to test.You can say
if( animal instanceof Carnivore )
to find out if it is a Carnivore or a descendant thereof, and you can useif( animal.getClass() == Carnivore.class )
to find out if it is exactly a Carnivore and not a descendant thereof.However, the fact that you need to perform a check of this kind usually means that you have a flaw in your design, a missing overridable method, or something like that.
Take a look at
instanceof
operatorhttp://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
Note that although many people thinks that using it may be considered dangerous, they even compare to
GOTO
, but it's not bad in some cases. You can use it, but not really often.You can use the
instanceof
operator