java - Good design for accessing subclass methods in a vector of abstract class objects -


i using vector store objects of anabstractclass superclass. abstract class contains 2 non-constructor methods:

public final string getname() {     return name; }  public abstract int getcost(); 

within each subclass created getcost method. within anotherclass have vector of abstract class objects. in method of anotherclass using string contains name, cost, , other data types specific each of multiple subclasses. accessing vector retrieve name , cost fine.

however, when try access other fields (ie: getcolor or getsize specific each subclass run following compile error:

error: cannot find symbol   symbol:   method <mysubclassmethod>()   location: class <myabstractclass> 

how can efficiently design solution dilemma?

to access methods specific subclass need cast subclass.

example:

subclass foo = (subclass) myanabstractclassinstance; 

if don't know subclass have, can type check using instanceof

example

// subclass implements size , color, superclass not if (foo instanceof subclass) {     subclass foobar = (subclass) foo;     int size = foobar.size();     string color = foobar.color(); } 

alternative solutions: 1. make subclasses provide methods (even if nothing) 2. make subclasses provide method lets know methods support


Comments

Popular posts from this blog

c++ - Delete matches in OpenCV (Keypoints and descriptors) -

java - Could not locate OpenAL library -

sorting - opencl Bitonic sort with 64 bits keys -