考虑下面的java代码:
class Enclosing {
void method(){}
void method(String str){}
class Inner {
void method(){}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在读一本书,告诉我Inner.method()将隐藏两个版本Enclosing.method(),这意味着如果我method(aString)在课堂上的某个地方打电话,这是一个错误Inner.
为什么语言设计如此?
更新:
根据@Debosmit Ray给出的答案,它与阴影有关.我已经阅读了文档,并了解它是什么.
令我困惑的是为什么方法阴影是基于方法名称而不是方法签名?
我是一名 Java 程序员。
我在我的 android 项目中包含了一个开源 C 库(比如 A),以便通过函数 F1 执行一些本机工作。函数 F1 运行良好,但 A 编译的共享库大小为 5M。这意味着我的最终 APK 将增加大约 5M,这是很大的。
我的问题是,如何缩小共享库以仅包含我需要的函数?或者至少删除大部分我不需要的功能?有没有什么工具可以实现这一点?
更新 1:
@Employed Russian 已经通过“strip”工具回答了上述问题的大部分。
我进一步的问题是,是否有任何工具可以实现像ProGuard对 Java 所做的那样,即完全删除我没有调用的代码?