diff --git a/lib/java/src/org/apache/thrift/TUnion.java b/lib/java/src/org/apache/thrift/TUnion.java
index e33c7f2..cfe910b 100644
--- a/lib/java/src/org/apache/thrift/TUnion.java
+++ b/lib/java/src/org/apache/thrift/TUnion.java
@@ -104,7 +104,7 @@
     if (fieldId != setField_) {
       throw new IllegalArgumentException("Cannot get the value of field " + fieldId + " because union's set field is " + setField_);
     }
-    
+
     return getFieldValue();
   }
 
@@ -115,7 +115,7 @@
   public boolean isSet() {
     return setField_ != null;
   }
-  
+
   public boolean isSet(F fieldId) {
     return setField_ == fieldId;
   }
@@ -193,35 +193,22 @@
 
   @Override
   public String toString() {
-    String result = "<" + this.getClass().getSimpleName() + " ";
+    StringBuilder sb = new StringBuilder();
+    sb.append("<");
+    sb.append(this.getClass().getSimpleName());
+    sb.append(" ");
 
     if (getSetField() != null) {
       Object v = getFieldValue();
-      String vStr = null;
-      if (v instanceof byte[]) {
-        vStr = bytesToStr((byte[])v);
+      sb.append(getFieldDesc(getSetField()).name);
+      sb.append(":");
+      if(v instanceof ByteBuffer) {
+        TBaseHelper.toString((ByteBuffer)v, sb);
       } else {
-        vStr = v.toString();
+        sb.append(v.toString());
       }
-      result += getFieldDesc(getSetField()).name + ":" + vStr;
     }
-
-    return result + ">";
-  }
-
-  private static String bytesToStr(byte[] bytes) {
-    StringBuilder sb = new StringBuilder();
-    int size = Math.min(bytes.length, 128);
-    for (int i = 0; i < size; i++) {
-      if (i != 0) {
-        sb.append(" ");
-      }
-      String digit = Integer.toHexString(bytes[i] & 0xFF);
-      sb.append(digit.length() > 1 ? digit : "0" + digit);
-    }
-    if (bytes.length > 128) {
-      sb.append(" ...");
-    }
+    sb.append(">");
     return sb.toString();
   }
 
diff --git a/lib/java/test/org/apache/thrift/TestTUnion.java b/lib/java/test/org/apache/thrift/TestTUnion.java
index a9cb9c5..775db52 100644
--- a/lib/java/test/org/apache/thrift/TestTUnion.java
+++ b/lib/java/test/org/apache/thrift/TestTUnion.java
@@ -192,4 +192,12 @@
     assertEquals(cu, copy);
     assertNotSame(cu.bufferForBinary_field().array(), copy.bufferForBinary_field().array());
   }
+  
+  public void testToString() throws Exception {
+    byte[] bytes = {1, 2, 3};
+    ByteBuffer value = ByteBuffer.wrap(bytes);
+    ComparableUnion cu = ComparableUnion.binary_field(value);
+    String expectedString = "<ComparableUnion binary_field:01 02 03>";
+    assertEquals(expectedString, cu.toString());
+  }
 }
