2014-05-23 146 views
0

覆盖的getResourceAsStream()我在寻找一种方式来覆盖Class.getResourceAsStream(字符串路径)在我的Android项目要求,该项目是一个J2ME到Android代码桥具有使代码,而无需任何改动移植,所以如果本地j2me代码调用getResourceAsStream(String path),我需要拦截该调用并修改路径以追加适当的android文件夹结构。在android系统

任何想法,这可怎么实现的?

+0

也许用自己的ClassLoader,Android是否允许它 – Raffaele

回答

1

我认为该端口将是比听起来更困难,getResourceAsStream()是问题的一部分无关。也许一个更简单的策略可能是从现有的应用程序中提取一个库,并在移植的应用程序中使用该库。

无论如何,对于原来的问题。 Class.getResourceAsStream代表加载ClassLoader,所以如果你写自己的ClassLoader你可能可以调整路径。

使用您自己的ClassLoader意味着您的应用程序将具有两个类层次结构,并且这反过来将导致它们无法依靠共享装入器加载的某些API类型进行通信。我从来没有在Android上试过,但作为一种思考练习,您应该让Android系统加载您的API,并将主应用程序加载器设置为您自己的父级(这是Servlet世界发生的情况),最后使用您的自己的加载需要的路径调整类(显然您的装载机不会委派资源加载到其父withou调整路径,需要)