Java to kotlin 原来那么简单的。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wobuhuicode
V2EX    Android

Java to kotlin 原来那么简单的。

  •  
  •   wobuhuicode 2021-02-26 15:26:06 +08:00 14797 次点击
    这是一个创建于 1708 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近做 RN 还要写写原生安卓和 IOS 。于是想把业务中的库拉出来整合一下。

    发现社区出了 react-native-builder-bob 来做组件手脚架。

    模版只有支持 kotlin + oc / kotlin + swift / C++

    我自己业务都是用 java + oc 来写原生库的。唯有选择 kotlin + oc 。

    看到 md 上说 java 代码直接复制到对应的 KT 文件去,AS 编辑器就会自动帮你转的了。

    试了一下,果然可以。所有嗦的 java 语法都变成了简洁的 kotlin 。

    15 条回复    2021-02-28 12:24:54 +08:00
    KeyboardManAnAn
        1
    KeyboardManAnAn  
       2021-02-26 15:50:47 +08:00
    这个确实是 Android Studio 的良心功能, 我第一次用的时候确实是被惊艳到了. 相比较而言, Objective-C 转 Swift 就蛋疼太多了, 虽然也有收费应用能够实现自动转换代码的功能, 但是远不及 IDE 自带的转换功能体验来得好我觉得
    zagfai
        2
    zagfai  
       2021-02-26 17:44:02 +08:00   1
    Java 转 Kotlin 转完之后是 KotJava,改得了的代码,改不了的编程思维。
    300
        3
    300  
       2021-02-26 17:58:13 +08:00
    Ctrl + Alt + Shift + K
    teok
        4
    teok  
       2021-02-26 18:25:02 +08:00
    @zagfai 的确是这样。语法很好学,符合这语言设计哲学的编程思维需要很多时间去实践掌握
    HangoX
        5
    HangoX  
       2021-02-26 18:27:50 +08:00
    反过来没有,当你要粘贴到 java 的项目的时候有点绝望。
    DiDiz
        6
    DiDiz  
       2021-02-26 18:28:45 +08:00
    花一点时间去学 Kotlin 呗,又不难,一周就够了
    Anarchy
        7
    Anarchy  
       2021-02-26 18:54:04 +08:00
    自动转还是可能出问题的,特别 Lambda,匿名内部类这块。
    zhang2e
        8
    zhang2e  
       2021-02-26 18:58:16 +08:00
    自动转出的代码,其实还是用 Java 的思维写 Kotlin,Kotlin 的特性都没有用到,一堆警告,很不优雅。
    hantsy
        9
    hantsy  
       2021-02-26 19:02:13 +08:00
    @Anarchy 转 Lambda 的确问题太多。特别是在用一些 Stream 类似的 API 时。
    wobuhuicode
        10
    wobuhuicode  
    OP
       2021-02-26 20:10:02 +08:00
    @DiDiz 这也有的杆……全篇有说我不会 kotlin 吗……说的是旧代码抽出来做库
    night98
        11
    night98  
       2021-02-26 20:56:32 +08:00
    文件右键就能直接转了,IDEA 是这样的,不过通常会在一些代码例如 lambda 或是一些 spring 相关的代码上出现问题,不过我这边是后端,安卓这块可能有一定差异
    sagaxu
        12
    sagaxu  
       2021-02-26 21:02:17 +08:00 via Android
    以前自动翻译的代码质量差,远不如人肉翻译,自动转化有时候还编译不过,现在改善了吗?
    wobuhuicode
        13
    wobuhuicode  
    OP
       2021-02-26 21:29:55 +08:00 via iPhone
    @night98 我这里需求有点不一样。rn 类库手脚架模版文件已经创建好了,只需要把以前的业务代码复制到指定位置就好了。所以没有直接转。
    zerofancy
        14
    zerofancy  
       2021-02-27 22:46:56 +08:00
    @HangoX 反过来可以通过先查看字节码再反编译的方式,不过肯定还是要自己进行一些调整啥的
    https://blog.mindorks.com/how-to-convert-a-kotlin-source-file-to-a-java-source-file
    HangoX
        15
    HangoX  
       2021-02-28 12:24:54 +08:00
    @zerofancy 我知道可以看字节码反编译,kt 插件集成了,但是那个代码基本是不能用的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5257 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 48ms UTC 08:05 PVG 16:05 LAX 01:05 JFK 04:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86