Nic*_*ckF 130 android android-studio
我在Android应用程序中使用Android Studio.
我的代码工作和编译.
最近,IDE在以下代码的getClass上显示错误(红线):
fragment.getClass().getSimpleName()
Run Code Online (Sandbox Code Playgroud)
但仍然应用程序编译并运行.
错误是:
Ambiguous method call. Both
getClass () in Object and
getClass () in Object match.
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下它是什么意思吗?为什么代码仍在运行?
Rit*_*une 255
我认为这是Android Studio中的一个错误.众所周知,Android Studio基于IntelliJ平台和IntelliJ IDEA Community Edition的现有功能.
谷歌与JetBrains合作开发了它.据报道,IntelliJ也会发生同样的错误.看看错误报告
此问题的唯一解决方法是将您调用的实例强制getClass()转换Object为如下:
((Object) this).getClass()
Run Code Online (Sandbox Code Playgroud)
Jam*_*ald 73
您可以通过修补Android SDK的源代码来避免此错误,而不是修改您的应用程序代码.
当遇到getClass()错误时,请转到方法声明(在Mac上为⌘B).这将导航到诸如的路径$ANDROID_HOME/sources/android-20/java/lang/Object.java.现在,在IntelliJ或Android Studio中:
Object.java通过选择使可写File -> Make File Writable.如果您尝试编辑该文件,系统可能会提示您自动执行此操作.删除无界通配符:
//删除无界通配符(Class)以避免http://youtrack.jetbrains.com/issue/IDEA-72835 public final native class getClass();
较新版本的Android Studio似乎遇到了一个错误,即使在将文件声明为可写之后也无法编辑该文件.而是复制路径,Edit -> Copy Path或⇧⌘C,并在您喜欢的编辑器中编辑它.
此更改将保留源导航功能.其他选择:
getClass()声明.Object.java文件名称,例如Object.java.in.将"getClass"转换为Object,使用
((Object) this).getClass()
Run Code Online (Sandbox Code Playgroud)
对于那些有碎片问题的人,请使用
((Object) fragment).getClass()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23466 次 |
| 最近记录: |