加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何解释和翻译kotlin代码到java?

发布时间:2020-12-15 01:08:20 所属栏目:Java 来源:网络整理
导读:我一直在努力将这个Kotlin代码翻译成Java,因为该项目是用Java编写的.我正在通过研究Kotlin语法进行翻译.但是,还有一些人我很难理解. https://github.com/airbnb/lottie-android/blob/master/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/AppIntr

我一直在努力将这个Kotlin代码翻译成Java,因为该项目是用Java编写的.我正在通过研究Kotlin语法进行翻译.但是,还有一些人我很难理解.

https://github.com/airbnb/lottie-android/blob/master/LottieSample/src/main/kotlin/com/airbnb/lottie/samples/AppIntroActivity.kt

特别:

private val animationView: LottieAnimationView by lazy {
    rootView.inflate(R.layout.app_intro_animation_view,false) as LottieAnimationView
}

private val viewPager: LockableViewPager by lazy {
    findViewById

对于setViewPagerScroller,我能够翻译第一部分.

Field scrollerField = ViewPager.class.getDeclaredField("mScroller");
scrollerField.setAccessible(true);

Field interpolator = ViewPager.class.getDeclaredField("sInterpolator");
interpolator.setAccessible(true);
最佳答案
setViewPagerScroller方法使用kotlin anonymous inner class语法.这是’对象’部分,它在java语法中没有真正的对应部分.

private void setViewPagerScroller() {
    try {
        Field scrollerField = ViewPager.class.getDeclaredField("mScroller");
        scrollerField.setAccessible(true);

        Field interpolator = ViewPager.class.getDeclaredField("sInterpolator");
        interpolator.setAccessible(true);

        Scroller scroller = new Scroller(this,(android.view.animation.Interpolator) interpolator.get(null)){

            @Override
            public void startScroll(int startX,int startY,int dx,int dy,int duration) {
                super.startScroll(startX,duration * 7);
            }
        }

        scrollerField.set(viewPager,scroller);
    } catch (NoSuchFieldException error) {
        // Do nothing.
    } catch (IllegalAccessException error) {
        // Do nothing.
    }
}

as关键字就像java中的一个转换.希望你能用这个翻译有趣的generateFinalButtonBehaviour(),它包含更多相同的内容.

毫无疑问,Lazy构造在java中变得更加冗长.如果您选择遵循以下结构,则必须使用规则来错误地访问viewpager.

private LockableViewPager viewPager;

private LockableViewPager getViewPager(){
    if(viewPager == null){
        // produce viewpager and store in field
    }
    return viewPager;
}  

您还可以使用类来更准确地表示字段的延迟初始化. (这样你就不会错误地访问一个你想要懒惰地初始化的字段)这变得更加冗长但是值得.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读