8203444: String::formatted (Preview)
authorjlaskey
Thu, 06 Jun 2019 12:24:44 -0300
changeset 55262 7d83cf1cfa74
parent 55261 dff30b1557ee
child 55263 830ca7b43b95
8203444: String::formatted (Preview) Reviewed-by: smarks, rriggs, sherman
src/java.base/share/classes/java/lang/String.java
test/jdk/java/lang/String/Formatted.java
--- a/src/java.base/share/classes/java/lang/String.java	Thu Jun 06 12:24:44 2019 -0300
+++ b/src/java.base/share/classes/java/lang/String.java	Thu Jun 06 12:24:44 2019 -0300
@@ -3314,6 +3314,30 @@
     }
 
     /**
+     * Formats using this string as the format string, and the supplied
+     * arguments.
+     *
+     * @implSpec This method is equivalent to {@code String.format(this, args)}.
+     *
+     * @param  args
+     *         Arguments referenced by the format specifiers in this string.
+     *
+     * @return  A formatted string
+     *
+     * @see  java.lang.String#format(String,Object...)
+     * @see  java.util.Formatter
+     *
+     * @since 13
+     *
+     * @deprecated  This method is associated with text blocks, a preview language feature.
+     *              Text blocks and/or this method may be changed or removed in a future release.
+     */
+    @Deprecated(forRemoval=true, since="13")
+    public String formatted(Object... args) {
+        return new Formatter().format(this, args).toString();
+    }
+
+    /**
      * Returns the string representation of the {@code Object} argument.
      *
      * @param   obj   an {@code Object}.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/lang/String/Formatted.java	Thu Jun 06 12:24:44 2019 -0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * bug 8203444
+ * @summary Unit tests for instance versions of String#format
+ * @run main Formatted
+ */
+
+import java.util.Locale;
+
+public class Formatted {
+    public static void main(String[] args) {
+        test1();
+    }
+
+    /*
+     * Test String#formatted(Object... args) functionality.
+     */
+    static void test1() {
+        check("formatted(Object... args)",
+                "Test this %s".formatted("and that"),
+                String.format("Test this %s", "and that"));
+    }
+
+    static void check(String test, String output, String expected) {
+        if (output != expected && (output == null || !output.equals(expected))) {
+            System.err.println("Testing " + test + ": unexpected result");
+            System.err.println("Output: " + output);
+            System.err.println("Expected: " + expected);
+            throw new RuntimeException();
+        }
+    }
+}