更新: serv-inc已经创建了这个程序的一个版本,它可以自动确定您需要导入的类(而不必自己手动指定它们)。
用法:./javimp.py <java-src-file> [<java-src-file> ...]
仅支持插入模式(意味着文件本身将被更改)。这个工具可能更接近大多数想要命令行自动导入工具的人正在寻找的东西。
我今天也在找同样的东西,但我没有找到。但是,我今天花费了大部分时间制作了一个具有执行类似功能的 Python 脚本。
javimp.py通过 CLI 工作。它有几种不同的模式,但在您的情况下,该-i
选项可能是您想要的。
python javimp.py -i YourJavaFile.java
运行此命令将使 javimp.py 通过 YourJavaFile.java 查找以“import”开头的行。当它找到一个时,它将尝试将该行的其余部分与由网络抓取创建的 Java 类数据库中的条目的结尾进行匹配,如果找到匹配项,它会将该行替换为import full.package.to.WhateverClassYouHadImported;
. 它还将解释缺少(甚至太多)分号。
在您的示例中,这将是:
// Note that you still need to import the classes, but
// you don't need to remember the packages in your head
// anymore
import Activity; // -> import android.app.Activity;
import Bundle; // -> import android.os.Bundle;
import TextView; // -> import android.widget.TextView;
public class Test extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final TextView tv = new TextView(this);
tv.setText("Hello World!");
setContentView(tv);
}
}
这种方法并不完美 - 值得注意的是,如果数据库中某处有两个具有相同名称的类,则可能会得到错误的匹配,并且它还需要一个涵盖所有开发领域的最新数据库。但是,只要您不太信任它,它可能是一个有用的工具。您还可以编辑源代码以将网络抓取扩展到其他网页,而不是我在快速混杂解决方案中指定的网页。开箱即用,它应该支持 Java 标准库和 Android API,截至 2016/06/20。
请记住,如果您没有使 javimp.py 可以从文件系统中的任何位置访问,如果您从其他位置而不是它所在的目录运行它,您仍然需要指定它的路径。就个人而言,我通过向我的编辑器添加一个命令来规避这个问题,该命令通过指定绝对路径在活动文件上运行它。你可能会做类似的事情。