我遇到问题的概念是如何将令牌(例如Apple.class
)传递给方法,然后访问子类的静态方法,以便检索有关子类的通用信息?(在这种情况下是通用图像苹果)
这是一些类似 Java 的伪代码:
abstract class Food {
}
class Apple extends Food {
static Image getImage(){
return (generic image of an apple);
}
}
class Onion extends Food {
static Image getImage(){
return (generic image of an onion);
}
}
void arrayManager(Class<? extends Food> foodToken){
useImage(foodToken.getImage()); // <-- can't access static methods from Class token
storeType(foodToken);
}
//... executing code ...
arrayManager(Apple.class);
arrayManager(Onion.class);
执行代码需要告诉arrayManager()
它想要存储什么样的食物。该arrayManager()
方法显示一个简单的通用图像并存储令牌以供以后参考。但是我找不到获取特定子类的通用图像的方法。
如果该arrayManager()
方法想要实例化传入的令牌,那么没问题,我可以:
foodToken.newInstance();
然后我可以调用GetImage()
.
arrayManager()
但是当我只想要一个静态方法给我一个与特定 Apple 实例无关的通用图像时,必须实例化一个 Food 类型对象(在调用之前或之后)似乎很荒谬。如果我存储令牌并临时实例化以检索图像,则每次我需要该子类的静态方法中的某些东西时,我都必须实例化然后丢弃该对象。如果我实例化并存储实际对象而不是令牌,我将面临存储数千个相同对象只是为了获取通用信息的问题。
几个星期以来,我一直在为这个问题的版本苦苦挣扎。到目前为止,我还没有发现任何似乎包含令牌必须传递给方法的问题。如果我的方法论完全湿了,我愿意接受其他的处理方式。我希望我不必使用大量的反射代码。感谢您的阅读。