在Android中使用`Objects.equals()`

时间:2014-02-04 09:51:44

标签: java android

我正在尝试在Android中使用Objects.equals(obj a, obj b)方法(link),但似乎Android无法访问它。据我所知,这个类在Java 1.7及更高版本中可用。有没有办法在Android中访问这个类?或者是否有一种等效的方法,其行为与我可以使用的方式相同?

7 个答案:

答案 0 :(得分:7)

Objects.equals()具有以下来源:

public static boolean equals(Object a, Object b) {
     return (a == b) || (a != null && a.equals(b));
 }

答案 1 :(得分:2)

Objects.equals(obj a, obj b)的javadoc说: 如果参数彼此相等则返回true,否则返回false。因此,如果两个参数都为null,则返回true,如果只有一个参数为null,则返回false。否则,通过使用第一个参数的equals方法确定相等性。

相当于:

if (a == null && b == null) {
   return true; 
} else if (a == null || b == null) {
   return false; 
} else return a.equals(b);

答案 2 :(得分:1)

您可以在<{1}}上致电equals()

Object

答案 3 :(得分:1)

使用StringValue.equals(Object o);可能会有帮助。

答案 4 :(得分:0)

如果您可以使用Apache objectutils

ObjectUtils.equals(Object object1, Object object2) - 返回布尔值

比较两个对象是否相等,其中一个或两个对象可以为空。

 ObjectUtils.equals(null, null)                  = true
 ObjectUtils.equals(null, "")                    = false
 ObjectUtils.equals("", null)                    = false
 ObjectUtils.equals("", "")                      = true
 ObjectUtils.equals(Boolean.TRUE, null)          = false
 ObjectUtils.equals(Boolean.TRUE, "true")        = false
 ObjectUtils.equals(Boolean.TRUE, Boolean.TRUE)  = true
 ObjectUtils.equals(Boolean.TRUE, Boolean.FALSE) = false

答案 5 :(得分:0)

您可以使用编译级别为19的java 7(如果低于最低级别19,则不使用try-resources)。您可以通过设置compileOptions:

来更改带有gradle的compile-Options
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

以下是一个完整的例子:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.8.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
        versionCode 1
        versionName "1.0"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:+'
}

答案 6 :(得分:0)

您可以使用v4支持的兼容类ObjectsCompat.equals