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