Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字段类型';myField';是混凝土等级';MyClass';_Java_Android_Compiler Warnings_Android Lint - Fatal编程技术网

Java 字段类型';myField';是混凝土等级';MyClass';

Java 字段类型';myField';是混凝土等级';MyClass';,java,android,compiler-warnings,android-lint,Java,Android,Compiler Warnings,Android Lint,我正在为生产准备android应用程序,因此我启用了大多数lint警告。一个特别的警告被广泛传播,但我不理解 警告如下: 字段“loginF”的类型是具体类“LoginFragment” 以下是描述: 报告其类型声明为具体类而不是接口的任何实例字段。这样的声明可能表示抽象失败,并可能使测试更加困难。其类来自系统或第三方库的声明将不会在本次检查中报告 任何详细说明都将不胜感激。 注意:我使用的IDE是“Android Studio”。它抱怨是因为您将此类(包含loginF字段)与LoginFrag

我正在为生产准备android应用程序,因此我启用了大多数lint警告。一个特别的警告被广泛传播,但我不理解

警告如下:

字段“loginF”的类型是具体类“LoginFragment”

以下是描述:

报告其类型声明为具体类而不是接口的任何实例字段。这样的声明可能表示抽象失败,并可能使测试更加困难。其类来自系统或第三方库的声明将不会在本次检查中报告

任何详细说明都将不胜感激。

注意:我使用的IDE是“Android Studio”。

它抱怨是因为您将此类(包含
loginF
字段)与LoginFragment耦合;如果更改LoginFragment,则可能必须更改此类

或者,看看您在这个类的LoginFragment上使用的方法。它们是否共同形成了一些可以在接口中指定的行为

e、 g.如果您在
loginF
上调用的唯一方法是
initialogin()
,那么您可能有:

interface Login {
    void initiateLogin();
}

class LoginFragment extends Fragment implements Login {
    @Override
    public void initiateLogin() {
        // do login
    }
}
这样就不用声明
loginframent loginF=new loginframent()
,您可以使用
Login Login=new Login片段()

然后,您可以更改
LoginFragment
,只要它保持
initiateLogin()
方法,甚至可以将
new LoginFragment()
替换为
Login
的任何其他实现,这对于测试中的模拟可能很有用


一个非常做作的例子。我建议使用默认的lint配置,而不是这个超严格的配置。

您可以发布LoginFragment类吗?我认为这是建议您应该将变量存储为接口类型,在这种情况下,
Fragment
。因为这将使事情更加抽象,从而更容易模拟测试等。