gpt4 book ai didi

java - 如何扁平化整个包层次结构?

转载 作者:行者123 更新时间:2023-12-02 07:31:23 26 4
gpt4 key购买 nike

如果我想扁平化所有包层次结构,我该如何继续以及有哪些问题?

请注意,这个问题不是关于我为什么要这样做,而是关于如何这样做。例如,有效的理由包括(但不限于)使 Proguard 成为有用程序的几个原因。

首先,我想保持类名不变,但删除所有层次结构。

所以:

  • com.acme.example.SomeClass 应变为“SomeClass”或
    “a.SomeClass”
  • com.acme.sample.AnotherClass 应该成为
    “AnotherClass”或“a.AnotherClass”

我快速检查了一下,在大约一千个类中,没有两个类具有重复的名称:

find . -iname "*java" | sed 's/.*\///g' | sort | wc -l

和:

find . -iname "*java" | sed 's/.*\///g' | sort | uniq | wc -l

两者都提供相同数量的.java文件(所以我很确定*.java文件中没有任何“重复名称”)。

我正在考虑编写一个 shell 脚本来:

  • 删除(或修改)封装行
  • 删除所有“import com.acme...”行

这行得通吗?

什么因素可能会阻碍此功能的发挥?从公共(public)/ protected /默认/私有(private)可见性的角度来看会发生什么?

我想反射(reflection)会在这里造成严重破坏,但幸运的是我们没有做任何事情。

请注意,我只想在我自己的类上执行此操作:我不想修改外部 API/jar。

最佳答案

您应该看看proguard 。它是一个代码混淆器,有很多选项,包括扁平化包,如果您不想,则不混淆其他内容。

关于java - 如何扁平化整个包层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com