Jetpack Compose中mutableListOf出现未解析引用问题
看起来你遇到了个挺奇怪的小问题——单个MusuButton实例能正常创建,可一旦把它作为泛型参数放到mutableListOf<MusuButton>()里就报错。我来帮你梳理几个最可能的原因和解决办法:
先试试刷新IDE缓存
这种前后不一致的错误,很多时候是IDE的索引抽风了。你可以操作一下:点击菜单栏的File → Invalidate Caches...,选择Invalidate and Restart重启IDE,大概率能解决这种莫明其妙的未解析引用问题。检查MusuButton是不是inline类
如果MusuButton是用value class声明的内联类,在JVM平台上它作为泛型参数时会有特殊处理逻辑,早期Kotlin版本或者IDE可能会出现识别延迟。你可以暂时把它改成普通类测试,或者确保你的Kotlin版本在1.5以上,新版本对inline类的泛型支持更完善。确认嵌套类的访问权限
如果MusuButton是某个外部类的内部类(带inner关键字),那在外部类作用域之外声明泛型列表时,得带上外部类的限定符,比如mutableListOf<OuterClass.MusuButton>()。不过你能创建单个实例,说明大概率在正确作用域里,但还是可以检查下类定义有没有inner修饰符,有没有遗漏限定符。排查细微的拼写或导入问题
虽然单个实例能识别,但有时候泛型参数的拼写可能不小心出错(比如大小写、少打字母),或者导入的类和你想用的不是同一个。你可以按住Ctrl(Windows)/Cmd(Mac)点击单个实例里的MusuButton,看看跳转的类定义,再对比泛型参数里的是不是同一个类。
要是上面的方法都试过还没解决,你可以把MusuButton的类定义代码贴出来,这样能更精准定位问题~
内容的提问来源于stack exchange,提问作者james

