使用静态内部类时生成错误

Posted

技术标签:

【中文标题】使用静态内部类时生成错误【英文标题】:Build error when using static inner class 【发布时间】:2015-05-27 20:38:03 【问题描述】:

我正在为 android 开发一个库,当我在示例项目中使用静态内部类时,我不断收到一个奇怪的错误:“找不到符号变量”:

这是我的分解代码:

Outer.java(SDK 项目)

public class Outer 

    [...] // Attributes and methods

    public static class Inner 
        public static int x = 42; 
    

MainActivity.java(示例项目)

import com.xxx.xxx.Outer;

public class MainActivity extends Activity 

    [...] // Attributes

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.d("MainActivity", "x = " + Outer.Inner.x);
    

这是日志错误:

.../sample/MainActivity.java:54:错误:找不到符号 Log.d("MainActivity", "x = " + Outer.Inner.x); ^ 符号:变量内部 位置:类外

我的 SDK 中有另一个案例:

我的类“ImageHelper”有一个静态内部类“Builder”。

我在我的 SDK 中使用它并且它可以工作,但是当我想在示例项目中使用它时,我在构建运行时遇到了同样的错误。

我的代码有错误吗?

【问题讨论】:

奇怪,在这里工作。你清理过你的构建吗?这是一个带有一些提示和技巧的答案...***.com/questions/25706216/… 您的代码似乎没问题。向我们展示您的真实代码。尝试重建您的项目。 是的,我一次又一次地清理和重建 ^^' 【参考方案1】:

您是否尝试编译自己的剪切代码?当我自己进行编译时,它工作正常。也许它(提供剪辑)也适用于您并且您的完整程序使用不同的类?

根据你的代码

import com.xxx.xxx.Outer;

并且 Outer 代码中的 package 缺少行,您的项目可能没有一个 Outer,而是很多,其中一个没有内部静态类。

【讨论】:

以上是关于使用静态内部类时生成错误的主要内容,如果未能解决你的问题,请参考以下文章

错误:这个片段内部类应该是静态的 [ValidFragment]

静态内部类和非静态内部类的区别

静态内部类和非静态内部类的区别

枚举三部曲之一

使用静态内部类实现单例设计模式

使用静态内部类实现单例设计模式