I am currently coding a game in Java. At the moment I have one interface with a few methods: getPosX, getPosY, whatAmI (returns the enum type of the object) and update.
This interface is extended by all world items be it enemy, player, gem (currency) or any other world item. The thing is, while the enemy and the player both require the update method, things like gem or other world items don’t require this update method. Since interfaces works like a contract, the classes that extend this interface WILL require the method. But this method will never be used for things like gems. To me, this is weird. The reason I have done this however, is so that I can put every world item (gem, player, enemy) into one single list of world item.
I am in the process of reviewing my code and realized that it might not be the best option to have dead methods for things like gems (i.e update method that does nothing), but that I should instead have two interface say, worldItem and then for enemy and player, I have another interface which inherits from worldItems. That way, it would still be possible to put every world item into one single list. There is just one caveat to this. Whenever I want to loop through that list and call the update method, how would I do that?
If that one list contains every single worldItem (including gem, player and enemy), whenever I loop through the list and I get a worldItem that is player, I would not be able to call the update method on that element SINCE the update method belongs to another interface further down the inherit tree.
My question is, how would I go around this problem without adding more code? Is it even possible without separating the two interfaces into two different lists (i.e one with just player and enemies and the other with other world items)?
TL;DR: Two interfaces, one interface inherits from the other interface. The lowest interface contains an update method that is required for enemy and player, while the higher level interface contains general methods required for ALL world items.
I have one list that interfaces the higher level interface, that way ALL object fit into one list. When I loop through the list I want to be able to reach the update method for player (this method is in the lower level interface). But I also want access to other world items that do not have the update method, yet still interfaces the higher level interface.
What should I do?
I’ll add a visual representation of the inheritance tree and some pseudo-code to further highlight my ‘issue’
WorldItem [ getPosX() ] [ getPosY() ] [ whatAmI() ] / / V MovingObjects [ update() ] List<WorldItem> worldItems // arrayList that contains WorldItem (gem) and // MOvingObjects like player and enemy for(worldItem worldItem : worldItems) if(worldItem.whatAmI == PLAYER) worldItem.update()
This is what I would like to do, but obviously the WorldItem interface Does not have the update method, but the lower level interface does, of which the player implements
How would I go about doing this?
✓ Extra quality
ExtraProxies brings the best proxy quality for you with our private and reliable proxies
✓ Extra anonymity
Top level of anonymity and 100% safe proxies – this is what you get with every proxy package
✓ Extra speed
1,ooo mb/s proxy servers speed – we are way better than others – just enjoy our proxies!
USA proxy location
We offer premium quality USA private proxies – the most essential proxies you can ever want from USA
Our proxies have TOP level of anonymity + Elite quality, so you are always safe and secure with your proxies
Use your proxies as much as you want – we have no limits for data transfer and bandwidth, unlimited usage!
Superb fast proxy servers with 1,000 mb/s speed – sit back and enjoy your lightning fast private proxies!
99,9% servers uptime
Alive and working proxies all the time – we are taking care of our servers so you can use them without any problems
No usage restrictions
You have freedom to use your proxies with every software, browser or website you want without restrictions
Perfect for SEO
We are 100% friendly with all SEO tasks as well as internet marketing – feel the power with our proxies
Buy more proxies and get better price – we offer various proxy packages with great deals and discounts
We are working 24/7 to bring the best proxy experience for you – we are glad to help and assist you!