如何展平整个包层次结构?

时间:2012-10-13 17:31:05

标签: java package hierarchy flatten

如果我想要展平我的所有包层次结构,我该如何处理以及有什么问题?

请注意,这个问题不是为什么我要这样做,而是如何。例如,有效理由包括(但不限于)使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 / default / private可见性角度看会发生什么?

我想反思会在这里破坏,但幸好我们没有做任何事情。

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

1 个答案:

答案 0 :(得分:2)

你应该看看proguard。它是一个代码混淆器,包含一系列选项,包括展平包,如果你不想,也不会混淆其他东西。