diff --git a/user/super/com/google/gwt/emul/java/util/Objects.java b/user/super/com/google/gwt/emul/java/util/Objects.java
index 50cef14..f306edf 100644
--- a/user/super/com/google/gwt/emul/java/util/Objects.java
+++ b/user/super/com/google/gwt/emul/java/util/Objects.java
@@ -19,7 +19,7 @@
 
 /**
  * See <a
- * href="http://docs.oracle.com/javase/7/docs/api/java/util/Objects.html">the
+ * href="http://docs.oracle.com/javase/8/docs/api/java/util/Objects.html">the
  * official Java API doc</a> for details.
  */
 public final class Objects {
@@ -86,6 +86,11 @@
     return (a == b) || (a != null && a.equals(b));
   }
 
+  @SuppressWarnings("StringEquality")
+  public static boolean equals(String a, String b) {
+    return a == b;
+  }
+
   public static int hashCode(Object o) {
     return o != null ? o.hashCode() : 0;
   }
diff --git a/user/test/com/google/gwt/emultest/java/util/ObjectsTest.java b/user/test/com/google/gwt/emultest/java/util/ObjectsTest.java
index f6416e2..0ff1de8 100644
--- a/user/test/com/google/gwt/emultest/java/util/ObjectsTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/ObjectsTest.java
@@ -32,6 +32,7 @@
 
   public void testCompare() {
     Comparator<Integer> intComparator = new Comparator<Integer>() {
+      @SuppressWarnings("NumberEquality")
       @Override
       public int compare(Integer a, Integer b) {
         if (a == b) {
@@ -76,14 +77,19 @@
 
   public void testEquals() {
     assertTrue(Objects.equals(null, null));
-    assertFalse(Objects.equals(null, "not null"));
-    assertFalse(Objects.equals("not null", null));
     assertFalse(Objects.equals(new Object(), new Object()));
 
     Object obj = new Object();
     assertTrue(Objects.equals(obj, obj));
   }
 
+  public void testStringEquality() {
+    assertTrue(Objects.equals("a", "a"));
+    assertFalse(Objects.equals("a", "b"));
+    assertFalse(Objects.equals(null, "not null"));
+    assertFalse(Objects.equals("not null", null));
+  }
+
   public void testHashCode() {
     assertEquals(0, Objects.hashCode(null));
     Object obj = new Object();
