这是一个通过java的接口生成thrift文件的工具, 这个代码库的时间悠久, 已经有5年历史了, 当时写这个工具主要两个目的: 没接触thrift,但是希望使用thrift的用户,可以便于新用户的理解 之前用的是rmi,之后想转成thrift的用户 具体使用可以参考https://github.com/hongliuliao/thrift-generator 本次发布主要更新了以下几个功能 支持接口中的注释 支持自定义异常 保证生成的thrift方法和java文件中定义的方法顺序一致(不使用反射) 修复bug: 修复list<enum> bug 修复double类型 bug 感谢: imxuelei 反馈的问题及建议 例子: public interface ICommonUserService { public User login(int id, String name); public User getUserById(long id); public boolean saveUser(User user); public List getUserIds(long id); public Map getUserByIds(List ids); public Map> getUsersByName(List names); public Map> getGroupUsers(List names, List userList, List lns, long ll); public List testCase1(Map num1, List num2, List num3, long num4, String num5); } public class ThriftFileBuilderTest { private ThriftFileBuilder fileBuilder = new ThriftFileBuilder(); @test public void toOutputstream() throws Exception { this.fileBuilder.buildToOutputStream(ICommonUserService.class, System.out); } } 执行代码: mvn test -Dtest=com.sohu.thrift.generator.builder.ThriftFileBuilderTest 之后控制台输出如下: namespace java com.sohu.thrift.generator.test.thrift enum Status { NORMAL = 0, BLOCKED = 1 } struct Account { 1:i32 id, 2:string name } struct User { 1:i32 id, 2:string name, 3:bool sex, 4:Status status, 5:list ids, 6:Account account } service ICommonUserService { User login(1:i32 arg0,2:string arg1), map> getUsersByName(1:list arg0), bool saveUser(1:User arg0), map getUserByIds(1:list arg0), list getUserIds(1:i64 arg0), map> getGroupUsers(1:list arg0,2:list arg1,3:list arg2,4:i64 arg3), User getUserById(1:i64 arg0), list testCase1(1:map arg0,2:list arg1,3:list arg2,4:i64 arg3,5:string arg4) } thrift-generator 0.1 发布,通过 Java 接口生成 Thrift 文件工具下载地址