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

如何强制某些方法只对kotlin可见

马德宇
2023-03-14

我希望一些方法只对kotlin代码可见,而不是对Java代码可见。

例如,这里有一个方法fun method(){},它只能在kotlin代码中调用,不能在Java代码中调用。

共有1个答案

汝弘深
2023-03-14

您可以通过使用@jvmsynthety注释来实现您想要的目标。它在JVM字节码中用合成标志标记元素,它的使用在Java源代码中成为一个错误(对其他JVM语言不太确定,需要检查,但可能也可以):

@JvmSynthetic
fun f() { /*...*/ }

标记的元素仍然可以在Kotlin中正常使用。

不幸的是,@jvmsynthety不能用于标记类(它没有class目标)。

 类似资料:
  • 我通过以下步骤针对libc,libc abi,编译器-rt构建clang: > < li> 为了下载(和更新)llvm和子项目,我使用了以下脚本: 首先,我使用 gcc 针对 libgcc 和 libstdc 构建 llvm、clang、libunwind,并将它们安装在 / 中。在以下所有步骤中,除了最后一个,我都使用这个新鲜的叮当。 (我几乎可以肯定,这里没有一个步骤是多余的。) 在最后一步,

  • 使用简化了Hibernate ORM映射。 所有的指南都解释了如何编写不同的查询,但并不清楚如何只选择某些属性。 如果我不需要整个对象,而是需要数据库中所有人员的? 是否可以使用仅选择某些属性?

  • 问题内容: 我有一个初始化方法,该方法在广泛的层次结构中使用和覆盖。但是,每个init调用都继承了先前的工作。很自然,我会: 当然,这将确保所有内容都被调用并实例化。我想知道的是:我可以创建一种方法来确保调用super方法吗?如果所有init都没有被调用,那么对象中会发生故障,因此如果有人忘记了调用,我想抛出异常或错误。 TYFT〜伊顿 问题答案: 如果派生类无法调用超类,这是引发异常的一种方法:

  • 我想强制我的抽象类孩子实现我的抽象方法为私有。这可能吗?

  • 我正在尝试将Cloudflare设置为缓存来自S3的图像。我想在做这件事时尽可能地限制(最不宽容)。我假设我需要接受Cloudflare的请求来读取我的S3图像。我希望所有其他请求都被拒绝。 我遵循了这个指南:https://support.cloudflare.com/hc/en-us/articles/360037983412-Configuring-an-Amazon-Web-Service

  • 所以我已经读了这篇文章,但我不认为它完全是我想要的。我有一个dagger通过构造函数注入为我创建的对象。 让我们从java开始它看起来像什么: 请注意,两个setter方法返回对象本身。这样可以方便地编写如下代码: //...稍后,我可以像这样调用其方便的方法: 现在,我已经将AlgoliaSearchUsecase类转换为Kotlin类,如下所示: 如果我想要方便的方法(例如构建器方法),我还需