当前位置: 首页 > 知识库问答 >
问题:

@jvmsynthety在Kotlin中的预期用途是什么?

巫马瀚漠
2023-03-14
class MyClass {
    @JvmSynthetic
    fun f() { }
}
MyClass c = new MyClass();
c.f() // Error: cannot resolve method f()
val c = MyClass()
c.f() // OK

共有1个答案

梁丘高朗
2023-03-14

在普通Java中,合成方法由javac编译器生成。通常,编译器必须在嵌套类上创建合成方法,当用私有修饰符指定的字段被封闭类访问时。

在Java中给定以下类:

public final class SyntheticSample
{
    public static void main(final String[] args)
    {
        SyntheticSample.Nested nested = new SyntheticSample.Nested();
        out.println("String: " + nested.syntheticString);
    }

    private static final class Nested
    {
        private String syntheticString = "I'll become a method!";
    }
}

SyntheticSample类访问nested.SyntheticString字段时,它实际上调用了编译器生成的静态Synthetic方法(类似于Access$100)。

 类似资料:
  • 问题内容: 我在kotlin-stdlib中遇到了注解,我想知道它是做什么用的,但是不幸的是,它没有记录。(UPD:那时) 据我了解,将其应用于程序元素会将修饰符添加到相应的字节码元素中。结果,该元素在Java中变得不可见: Java代码中的某处: 但是相同的元素在Kotlin代码中仍然可见: 隐藏来自非Kotlin来源的声明是否有效使用?它是预期用途吗?还有哪些其他合适的用例? 由于从Java隐

  • 我们可以编写包含或不包含的代码,如下所示。 或 的实际用途是什么?。这是内存效率更高还是可读性更强?

  • 问题内容: 我对Bash脚本非常陌生,有人可以向我解释$#和$的情况吗?在以下代码中工作? 问题答案: 在Y分钟内来自Learn Bash :

  • 问题内容: 在Android 中实现类的用途是什么? 问题答案: 这是一个简单的界面,其中添加了两个字段: Android内部使用的sqlite数据库带有一列,该 列会自动递增,并且可以用作主键。这也与

  • 本文向大家介绍JavaScript中Atomics的用途是什么?,包括了JavaScript中Atomics的用途是什么?的使用技巧和注意事项,需要的朋友参考一下 原子学 的原子公司 是在JavaScript的对象,其提供要被作为静态方法进行原子操作。就像Math 对象的方法一样,Atomics 的方法和属性也是静态的。原子 与SharedArrayBuffer 对象一起使用。 该Atromic 

  • 本文向大家介绍javascript中window.location的用途是什么?,包括了javascript中window.location的用途是什么?的使用技巧和注意事项,需要的朋友参考一下 Window.location只读属性返回一个Location对象,其中包含有关文档当前位置的信息。 Location接口表示链接到的对象的位置(URL)。属性在位置对象上可用- Location.hre