Kotlin 属性:“属性的类型参数必须在其接收者类型中使用”

2023-12-21

我有以下简单的 Kotlin 扩展函数:

// Get the views of ViewGroup
inline val ViewGroup.views: List<View>
    get() = (0..childCount - 1).map { getChildAt(it) }

// Get the views of ViewGroup of given type
inline fun <reified T : View> ViewGroup.getViewsOfType() : List<T> {
    return this.views.filterIsInstance<T>()
}

这段代码可以编译并且工作正常。但是,我想要这个功能getViewsOfType成为一个财产,就像views。 Android Studio 甚至建议这样做。我让 AS 进行重构,它生成以下代码:

inline val <reified T : View> ViewGroup.viewsOfType: List<T>
    get() = this.views.filterIsInstance<T>()

但这段代码无法编译。它会导致错误:“属性的类型参数必须在其接收者类型中使用”

这里有什么问题呢?搜索有关此错误的帮助似乎没有找到答案。


该错误意味着,如果您在接收器类型(您要扩展的类型)中使用所述类型,则只能为扩展属性使用通用类型参数。

例如,您可以有一个扩展T:

val <T: View> T.propName: Unit
    get() = Unit

或者扩展使用的类型T作为参数:

val <T: View> List<T>.propName: Unit
    get() = Unit

至于为什么会这样,我认为原因是属性不能像函数那样具有泛型类型参数。虽然我们可以使用泛型类型参数调用函数......

val buttons = viewGroup.getViewsOfType<Button>()

...我不相信属性存在类似的语法:

val buttons = viewGroup.viewsOfType<Button> // ??
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kotlin 属性:“属性的类型参数必须在其接收者类型中使用” 的相关文章

  • 如何使用 KClass 反射在 Kotlin 中区分类和接口

    我正在使用 Kotlins KClass 按名称查找类 如下所示 val i KClass lt gt Class forName SampleClass kotlin 但是 我想省略接口 到目前为止 我通过构造函数区分接口和类 val i
  • Android Studio:XML 布局中的“包装在容器中”

    编辑 XML 布局文件时 Eclipse 有一项称为 包裹在容器中 的功能 重新格式化 gt Android gt 可让您选择一个或多个视图并在其周围包裹您选择的布局 Android Studio中有类似的东西吗 目前正在实施中 问题 69
  • 如何在 Linux 内核中定义并触发我自己的新软中断?

    我想在 Linux 内核中创建自己的软中断 这是正确的方法吗 In the init我想触发该模块的softirq我将添加一个调用 394 void open softirq int nr void action struct softir
  • Android WebView里面的ScrollView只滚动scrollview

    在我的应用程序中 我有一个 ScrollView 其中包含一些线性视图 一些文本视图和一个 Webview 然后是其他线性布局等 问题是 WebView 不滚动 Scroll 仅侦听 ScrollView 有什么建议么
  • Bitmap.getPixels() 中的 IllegalArgumentException

    我想将数据从位图复制到int using getPixels 这是我当前的代码 int pixels new int myBitmap getHeight myBitmap getWidth myBitmap getPixels pixel
  • Android 深度链接至 Instagram 应用

    Instagram 已经发布了 iOS 深层链接的 url 方案 但尚未为 Android 创建文档 有没有办法深入链接到 Android 上的 Instagram 应用程序 以转到 Instagram 应用程序中的特定位置 例如 Inst
  • Android Studio 与本地网络共享上的项目文件

    这是我的设置 Android Studio 项目文件位于 Ubuntu 14 10 盒子上的共享文件夹中 尝试在 Windows 8 机器上运行 Android Studio 1 0 2 并将 U 驱动器映射到包含项目文件的 Ubuntu
  • 图像作为电子邮件附件

    我想构建一个应用程序 我可以在电子邮件中附加图像 打开图像并将其设置为我的壁纸 我想让它跨平台 所以你能告诉我是否可以使用phonegap 或者我是否必须为iphone和android构建一个本机应用程序 您好 如果您只想通过电子邮件附加图
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • Mipmap 与可绘制文件夹[重复]

    这个问题在这里已经有答案了 我正在使用 Android Studio 1 1 Preview 1 我注意到 当我创建一个新项目时 我得到以下层次结构 不同 DPI 的 Mipmap 文件夹 不再有不同 DPI 的可绘制文件夹 我应该将所有资
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • OnLongClickListener 不工作

    我有一个ImageView 我需要使用onLongClickListener对于图像视图 当我使用这段代码时 什么也没有发生 Code gallery Gallery findViewById R id gall1 gallery setA
  • 您使用什么物理 Android 设备进行测试?

    有什么好的推荐用于测试目的的物理 Android 设备吗 我正在苹果阵营寻找像 iPod touch 这样的设备 可以帮助 iOS 开发人员测试他们的东西 我知道有 Nexus One 但那东西相当昂贵 而且我并不真正关心手机的东西 而是可
  • 在 Samsung Galaxy S5 Android 5.0 上使用 MediaPlayer 加载音频流需要超过 10 秒

    由于更新至 Android 5 0 MediaPlayer 在 Samsung Galaxy S5 上无法正常工作 启动音频流后加载时间超过 10 秒 示例代码 MediaPlayer mPlayer new MediaPlayer Str
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 插件“Android Bundle Support”不兼容

    大家好 自从上次更新以来 当我启动 android studio 时 我遇到了一个非常奇怪的错误 我有这个错误 插件错误 插件 Android Bundle Support 不兼容 直到构建 AI 195 SNAPSHOT 我在网上找不到任
  • 通过电子邮件发送文本文件附件

    我正在尝试附加一个文本文件以便通过电子邮件发送 但每当我打开电子邮件应用程序时 它都会说该文件不存在 请帮助 Intent i new Intent Intent ACTION SEND i setType text plain i put
  • 从 scala 的 Type 获取 ParameterizedType?

    有用的是 scala 的 Universe typeOf 保留了类的类型参数 import scala reflect runtime universe case class X T TypeTag val t typeOf T e g S
  • 我的应用程序中的后退按钮出现问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在手机关闭时清除共享首选项值 你

随机推荐

  • 更改数据捕获仅用于更新和删除

    我们的数据库插入量不大 每晚 200 500k 但更新量很少 每天可能几百个 我需要无限期地保留对插入行本身的所有更改的历史记录 但不是实际的插入 我很想使用更改数据捕获 但支持此操作所需的空间量不可用 如果我能弄清楚做以下其中一项 我的生
  • python从excel创建字典

    我有一个包含 2 列的 Excel 工作表 第一列是姓名 第二列是年龄 我想创建一个字典 其中名称是键 年龄是值 这是代码 但它错误地创建了字典 keyValues x value for x in worksheet col 0 data
  • WPF 的轻量级文本库?

    有谁知道有一个轻度标记文本到样式文本格式化库 即类似 Markdown 或 Textile NET 的东西 但它会生成本机 XAML 文档 或者更确切地说 FlowDocument 模型或类似的可以直接显示在 WPF 应用程序中 以避免使用
  • PHP 无法解析时间字符串

    我需要根据从表单收到的值创建一个日期时间 问题是该值像字符串一样被接收 2016 10 10T08 29 06 959Z 我需要像这样接收2016 10 10T08 29 06 959Z不带引号 因为如果我收到带引号的消息 则会出现下一个错
  • 当进程提升时,如何获取非提升会话的 Windows 身份验证 ID

    我需要获取由 GetTokenInformation 返回的 AuthenticationID 和登录站的用户的 TokenStatistics 类 无论我是否被提升 让我给你一些更多的信息 假设我这样做 var Result GetTok
  • CodeIgniter 路由在 Nginx 下不工作

    Ubuntu 16 04 参考设置this https www howtoforge com tutorial installing nginx with php7 fpm and mysql on ubuntu 16 04 lts lem
  • 无法解码Spring云流DefaultKafkaHeaderMapper中的json类型

    我们正在使用 spring cloud stream 并计划升级我们的 Kafka 版本 我们的应用程序使用spring cloud stream 2 0 0 spring kafka 2 1 7 与 apache kafka 服务器1 0
  • IVY - 设置默认传递值

    如何覆盖 IVY 中传递性的默认值 我假设您不希望 ivy 下载 a 的临时依赖项依赖性声明在你的ivy xml file 选项 1 传递参数 ivy xml
  • 如何平移视图,但保持其原始起始位置

    我正在对视图进行动画处理 以便在键盘出现时隐藏底部导航栏 我的问题是 我可以平移底部导航栏 主 消息区域 可以跟随它 但在 消息区域 的顶部形成一个间隙 有没有办法进行翻译 但保持 消息区域 的顶部与操作栏对齐 Here is an exa
  • Cordova iOS 模拟器电话和邮件无法正常工作

    我无法在我的 iOS Cordova 应用程序上通过 href 发起呼叫和发送邮件 对于代码 a href Call a 我在 Xcode 控制台中收到错误如下 There is no registered handler for URL
  • Android 有相当于 JPanel 的东西吗?

    Android有相当于Java的面板吗 我需要具有设定大小的东西 我可以动态添加不同的视图 有这样的技术吗 我基本上想要一个在 xml 代码中具有设定大小的空白区域 稍后我可以在活动中添加按钮 稍后添加的原因是按钮的数量和按钮的大小变化很大
  • 使用 :after 选择器添加

    我试图在页面中的每篇文章后面 自动 添加一条水平线 有没有办法使用 after 选择器来做到这一点 我希望能够将其设计成这样 article padding 10px article after content hr 这对于纯 CSS 来说
  • 如何在 Laravel 测试用例中模拟 xmlHttpRequests?

    更新内容见下文 我的控制器区分 ajax 和其他请求 使用Request ajax 作为条件 这工作得很好 但我想知道是否有一种方法可以对处理请求的控制器进行单元测试 测试应该是什么样的 可能是这样的 但它不起作用
  • 如何使用 ImageIcon 制作可拖动组件

    我正在尝试为国际象棋游戏构建一个用户界面 我用过一个网格包布局洋溢着JLabels棋子是图像图标 of the JLabels 现在我想通过在棋盘上拖动棋子来移动棋子 有没有办法做到这一点图像图标 或者有更好的方法来解决问题吗 编辑 这是一
  • MPMoviePlayerController 存在黑色背景

    我制作 iOS 应用程序 我使用 MPMoviePlayerController 但这显示黑色背景 我认为这个问题可以通过这个URL解决 但我不明白使用方式 MPMoviePlayerController 背景颜色不会粘住 https st
  • 如何使用 dcast() 对列的值求和?

    我被 dcast 函数困住了 我正在尝试为每个计数年的许多物种的个体创建一个总和表 我有一个包含 3 列的数据框 1 年份 因子 2 物种名称 因子 和 3 计数 数字 Year Species Counts 2002 SP1 2 2002
  • 将数据从 Postgres 流式传输到 Python

    我正在寻找有关将数据从 Postgres 表增量传输到 Python 的有效方法的建议 我正在实现在线学习算法 我想将数据库表中的批量训练示例读取到内存中进行处理 关于最大化吞吐量的好方法有什么想法吗 感谢您的建议 如果您使用 psycop
  • 如何使用 pandas hub_table 聚合唯一计数

    这段代码 df2 pd DataFrame X X1 X1 X1 X1 Y Y2 Y1 Y1 Y1 Z Z3 Z1 Z1 Z2 g df2 groupby X pd pivot table g values X rows Y cols Z
  • 使用 jaxb2-annotate-plugin 和 XJC 工具自定义注释

    我正在尝试在运行时将一堆 XSD 文件转换为 Java 源 POJO 这些 XML 模式将根据一些协议特定的模型定义生成 我已经使用 JAXB 的 XJC 将模式编译为 pojo 当我使用时开始遇到问题Jaxb2 注释插件 https gi
  • Kotlin 属性:“属性的类型参数必须在其接收者类型中使用”

    我有以下简单的 Kotlin 扩展函数 Get the views of ViewGroup inline val ViewGroup views List