检查会员/财产类型

2023-11-22

假设我有任何课程,比如这个:

class SomeClass(val aThing: String, val otherThing: Double)

然后我用反射来分析这个类的字段:

for(field in SomeClass.declaredMemberProperties){

}

如何检查每个字段的类型?


由于 Kotlin 没有字段,只有带有支持字段的属性,因此您应该检查属性的返回类型。

尝试这个:

    class SomeClass(val aThing: String, val otherThing: Double)

    for(property in SomeClass::class.declaredMemberProperties) {
        println("${property.name} ${property.returnType}")
    }

UPDATE:

如果类不使用没有支持字段的自定义 getter 和/或 setter,您可以像这样获取支持字段的类型:

property.javaField?.type

作为一个完整的示例,这里是您的类,其中包含一个名为 foo 的附加 val 属性,带有自定义 getter(因此不会创建支持字段)。您将看到该属性的 getJavaField() 将返回 null。

    class SomeClass(val aThing: String, val otherThing: Double) {
        val foo : String
            get() = "foo"
    }

    for(property in SomeClass::class.declaredMemberProperties) {
        println("${property.name} ${property.returnType} ${property.javaField?.type}")
    }

UPDATE2:

Using String::class.createType()将返回每个 KClass 的 KType,因此您可以使用例如property.returnType == String::class.createType()找出它是否是一个(kotlin)字符串。

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

检查会员/财产类型 的相关文章

  • Assembly.GetTypes() 返回类型的顺序是什么?

    如果我获得 AppDomain 中的类型列表 这些类型是否有固有的顺序 List
  • 在 Kotlin 中将 Dp 转换为 Px - 这种转换永远不会成功

    我在使用 Kotlin 编码时遇到了问题 我复制粘贴了一个java代码示例 https stackoverflow com a 9685690 6818446将 DP 转换为像素 以便将其作为以编程方式设置填充的参数 我原本期望 IDE 能
  • 在 Android Kotlin 项目上使用 Java 11 库

    我有以下使用 Java 11 的 HttpClient 编写的 POST 请求 但 Android Studio 无法识别这些库 import java net URI import java net http HttpClient imp
  • 在运行时替换 Property Setter 方法

    我有许多共享一个公共基类的对象 我希望拦截所有设置属性值的调用 并记录这些值是否已在每个实例的基础上设置 我可以用反射替换运行时属性的 Set 方法吗 一种方法是使属性成为虚拟的 并在运行时通过反射发射创建一个子类来覆盖属性 添加您的代码
  • 使用反射将 Nullable 属性复制到非 Nullable 版本

    我正在编写代码以使用反射将一个对象转换为另一个对象 它正在进行中 但我认为它可以归结为以下内容 我们相信这两个属性具有相同的类型 private void CopyPropertyValue object source string sou
  • 自定义类上的 List.sum

    我有以下代表 GF2 字段的代码 trait GF2 def unary this def that GF2 GF2 def that GF2 GF2 def that GF2 that match case Zero gt throw n
  • 如何使用反射确定属性类型?

    如何测试类型的属性以查看它是否是指定类型 编辑 我的目标是检查程序集以查看该程序集中的任何类型是否包含 MyType 或从 MyType 继承 的属性 这是我走过的路 AssemblyName n new AssemblyName n Co
  • 一般重写 Scala 案例类

    是否可以通用地替换案例类中的参数 更具体地说 假设我想要一个接收 查找 案例类和 替换 案例类 如语法规则的左侧和右侧 以及目标案例类的替代函数 并且该函数将返回将查找案例类的参数替换为替换案例类的新案例类 该函数还可以简单地采用一个案例类
  • 为什么 C# 中没有“fieldof”或“methodof”运算符? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 它们可以如下使用 FieldInfo field fieldof string Empty MethodInfo method1 methodo
  • 防止被 0 除的 Typescript 类型

    我正在使用打字稿创建一个用于培训目的的计算系统 但在除法过程中出现打字错误 您知道如何解决吗 type Variable value number resolve gt number type NoZeroVariable value Om
  • 在 Kotlin 中以编程方式更改区域设置

    我有一些在 Java 中以编程方式更改语言环境的代码 但是当我的应用程序迁移到 Kotlin 时 我无法再更改区域设置 例如 Java 中的这段代码运行得非常好 public static final void setAppLocale S
  • kotlin中的三元运算符[重复]

    这个问题在这里已经有答案了 我可以用java写 int i 10 String s i 10 Ten Empty 即使我可以将它传递到方法参数中 callSomeMethod i 10 Ten Empty 如何将其转换为 kotlin 在
  • 从 Kotlin 中的字符串中删除字符

    我正在尝试创建一个使用 Kotlin 中的字符串的 Android 计算器 如果逗号 或负数 已经包含一个 我不知道如何删除它 这是我的代码 它正确添加逗号 但如果用户再次单击则不会删除它 if buClickValue contains
  • 如何从 Java 类调用 Kotlin 类

    我需要将意图从 java 活动传递到 Kotlin 活动 Java活动ProfileActivity class Intent selectGameIntent new Intent ProfileActivity this kotlin
  • 如何判断Python对象是否是字符串?

    如何检查 Python 对象是否是字符串 常规字符串或 Unicode Python 2 Use isinstance obj basestring 对于要测试的对象obj Docs https docs python org 2 7 li
  • 为什么 Kotlin 数据类对象有反引号?

    这是我使用 Kotlin 数据类创建器插件创建的数据类 data class ResponseHealthInisghts val data List
  • 为什么 Python 布尔值占用超过一个字节?

    显然 Python 中整数占用 24 个字节 我可以理解 它这样做是因为代表无限数字的额外花哨 然而 布尔数据类型看起来也花费了高达 24 个字节 尽管它只能表示两个可能值之一 为什么 除了 1 位表示之外 还可能需要存储哪些额外数据Tru
  • 类 GADT 类型变量的未来角色?

    A 昨天的问题 https stackoverflow com q 41135212 3072788有一个定义HList 来自HList https hackage haskell org package HList 0 4 1 0 doc
  • Scala 2.10,它对 JSON 库和案例类验证/创建的影响

    显然 在 Scala 2 10 中我们得到了改进的反射 这将如何影响 lift json jerkson sjson 和朋友 此外 我们能否期望在不久的将来 Scala 中会出现内置的 JSON 语言功能 如 Groovy 的出色 GSON
  • DataFrame 中的字符串,但 dtype 是对象

    为什么 Pandas 告诉我我有对象 尽管所选列中的每个项目都是一个字符串 即使在显式转换之后也是如此 这是我的数据框

随机推荐

  • Swift 4 计时器因 NSException 崩溃

    我一直在寻找一种在 Swift 4 中使用计时器的方法 并查看了this文章 我在 xcode 中测试了我的代码 当计时器第一次计时 在本例中是 10 秒后 时 应用程序崩溃并收到错误 尽管构建成功 2017 11 20 19 54 42
  • 扩展设备注册控制器

    我有一个Accounts使用 Devise 设置模型 Devise 使用一些属性 例如电子邮件 密码等 但我还创建了一些其他属性 注册时 我想以某种方式设置它们 如何扩展注册控制器 我知道我需要实际创建一个像这样的新控制器 class Ac
  • Linux 中如何找出哪些进程正在使用交换空间?

    在Linux下 如何找出哪个进程使用交换空间更多 我发现的最好的脚本在此页面上 http northernmost org blog find out what is using your swap 这是脚本的一种变体 不需要 root b
  • 如何将 Python 框架构建与 Anaconda 结合使用

    我无法在 Mac 计算机上显示 matplotlib 动画 我已经多次尝试安装 ffmpeg 但都失败了 我开始怀疑这是否是解决问题的错误方法 I found this page 由于我从 Anaconda 中的 Spyder 应用程序运行
  • 随机数和下取整函数与轮函数

    为什么如果我使用随机数生成器和范围 0 9 我不会得到与下限函数组合相同的均匀分布 Math floor Math random 10 给出相当均匀的分布 同时Math round Math random 10 没有 Math floor
  • 在 Startup.cs 中添加 DbContextOptions 不注册数据存储

    我的问题是下面的代码在启动期间没有注册数据存储 这是我在应用程序响应中得到的特定 错误 语句 An unhandled exception occurred while processing the request InvalidOpera
  • 以真实分辨率将 MKMapView 渲染为 UIImage

    我正在使用此函数将 MKMapView 实例渲染为图像 implementation UIView Ext UIImage renderToImage UIGraphicsBeginImageContext self frame size
  • 如何在核心php中实现mvc

    没有任何框架的php如何使用mvc架构 更新于2020 02 11 重构答案以包含一些最佳实践并更接近 PHP 7 4 最简单的 PHP MVC 方法 数千个单词无法与一个干净的示例竞争 因此这里是一个简单的用例 想象一下 您想要显示一个描
  • 在Flutter中如何使用多图像选择器选择图像后获取图像路径?

    我想从选定的多个图像中获取图像路径 我正在使用这个link选择多个图像但我 获得了资产 我想要所选多个图像的路径 因为我想上传到 API 我在中添加了这个依赖项pubspec yaml如果有什么好的办法请告诉我 multi image pi
  • 处理 Winnt.h 时出现奇怪的编译错误

    当尝试通过 windows h 编译包含 winnt h 的文件时 出现以下错误 MyGl cpp microsoft sdks windows v6 0a include winnt h 964 error C2988 unrecogni
  • 基于 ListItem 特定变量对 ListItem 进行膨胀布局

    我正在使用一个SimpleCursorAdapter and a ListView显示使用 Loader 加载的一些数据 在 的里面cursor我的物品带有int从 0 到 3 我希望此 int 等于 0 1 的项目具有布局 右对齐 一种颜
  • SQS 消息延迟未按预期工作

    我正在尝试延迟发送单独的 SQS 消息 使用https docs aws amazon com AWSSimpleQueueService latest SQSDeveloperGuide sqs send message with tim
  • 编号正则表达式捕获的最大数量是多少?

    我正在维护一些通过串行无线电读取值并将它们解包到 Perl 数据结构中的代码 Don t yell at me I didn t write this if command string sx config gt sequence hex
  • 在这种情况下,WaitGroup.Wait() 是否意味着内存屏障?

    var condition bool var wg sync WaitGroup for item range items wg Add 1 go func item if meetsCondition item condition tru
  • IntelliJ - 将 Java 项目/模块转换为 Maven 项目/模块

    我在 Bitbucket 上有一个项目 仅承诺来源 为了将项目检索到新机器上 我使用了 IntelliJ 中的版本控制 gt 从版本控制中签出 然后它询问我是否想从此源创建一个新项目 我回答 是 到目前为止 一切都很好 它为我创建了一个不错
  • 禁用 Twitter Bootstrap 按钮组

    我在页面上有一个用于选择的按钮组 做出选择后 我希望按钮组仍然可见 以便用户可以看到他们所做的选择 但我不希望他们能够再使用它 有没有办法禁用按钮组 div class btn group vertical div
  • C++中的组合数(N选R)

    这里我尝试用C 编写一个程序来查找NCR 但我的结果有问题 这是不正确的 你能帮我找出程序中的错误吗 include
  • PostgreSQL:将非常大的数字的十六进制字符串转换为NUMERIC

    我正在尝试转换非常大的数字的十六进制字符串 到数字列 CREATE OR REPLACE FUNCTION hex to int hexval varchar RETURNS NUMERIC AS DECLARE result NUMERI
  • 使用 nls 在 R 中进行曲线拟合

    我正在尝试在以下数据 尾部 上拟合一条曲线 1 1 1 1 1 1 1 2 1 2 2 3 2 1 1 4 3 2 11 6 2 16 7 17 36 25 27 39 41 33 42 66 92 138 189 249 665 224
  • 检查会员/财产类型

    假设我有任何课程 比如这个 class SomeClass val aThing String val otherThing Double 然后我用反射来分析这个类的字段 for field in SomeClass declaredMem