Thank you Roger. > On Feb 15, 2018, at 4:38 PM, Roger Riggs <roger.ri...@oracle.com> wrote: > > Hi Jim, > > Its cleaner to do the API (CSR) review before and without the implementation. > It helps keep the issues separate.
This was on advice from a member of the core libs team. He can speak up if he wants. > > Don't make statements about count == Integer.MAX_VALUE / 2. > There is no point, unless it should throw IAE. > > On 2/15/2018 3:16 PM, Jim Laskey wrote: >>> On Feb 15, 2018, at 4:04 PM, Remi Forax <fo...@univ-mlv.fr> wrote: >>> >>> I'm not sure we need 4, it's just a convenient method that may be slower >>> than if the user code calls toString() (because of profile pollution), >>> so i'm not sure i pull it's own weight. >>> >>> And about adding a default method into CharSequence, the default method >>> should return a CharSequence or String ? >> If you mean each class returns an instance of its class, I think that >> overlaps Appendable.. > Beware thinking about default methods on interfaces; the dragons will get you. > Recently, this was discussed in the context of Reader.transferTo. >>> and what about the other implementations, AbstractStringBuilder and >>> CharBuffer at least ? >> This falls into the Appendable.append( T t, int count) realm mentioned >> originally. >> >> Long term this could be a goal, and maybe defaulting CharSequence#repeat >> returning a string would be shortsighted. >> >> But, I think having instance String#repeat returning a CharSequence would >> limit its use (methods expecting strings.) > There is no point in returning CharSequence, a String is a CharSequence and > can be used anywhere > a CharSequence can. > > $.02, Roger > >> >> — Jim >> >>> Rémi >>> >>> ----- Mail original ----- >>>> De: "Jim Laskey" <james.las...@oracle.com> >>>> À: "Brian Goetz" <brian.go...@oracle.com> >>>> Cc: "core-libs-dev" <core-libs-dev@openjdk.java.net> >>>> Envoyé: Jeudi 15 Février 2018 18:34:19 >>>> Objet: Re: RFR: 8197594 - String and character repeat >>>> Very reasonable approach. >>>> >>>> >>>>> On Feb 15, 2018, at 1:31 PM, Brian Goetz <brian.go...@oracle.com> wrote: >>>>> >>>>> I suggest merging 1 and 4 by making it an instance method on CS with a >>>>> default >>>>> in CS and an override on string and string builder? >>>>> >>>>> Sent from my MacBook Wheel >>>>> >>>>>> On Feb 15, 2018, at 9:20 AM, Jim Laskey <james.las...@oracle.com> wrote: >>>>>> >>>>>> This is a pre-CSR code review [1] for String repeat methods >>>>>> (Enhancement). >>>>>> >>>>>> The proposal is to introduce four new methods; >>>>>> >>>>>> 1. public String repeat(final int count) >>>>>> 2. public static String repeat(final char ch, final int count) >>>>>> 3. public static String repeat(final int codepoint, final int count) >>>>>> 4. public static String repeat(final CharSequence seq, final int count) >>>>>> >>>>>> For the sake of transparency, only 1 is necessary, 2-4 are convenience >>>>>> methods. >>>>>> In the case of 2, “*”.repeat(10) performs as well as String.repeat(‘*’, >>>>>> 10). >>>>>> 3 and 4 convert to String before calling 1. >>>>>> >>>>>> Performance runs with jmh (results as comment in [2]) show that these >>>>>> methods are significantly faster that StringBuilder equivalents. >>>>>> - fewer memory allocations >>>>>> - fewer char to byte array conversions >>>>>> - faster pyramid replication vs O(N) copying >>>>>> >>>>>> I left StringBuilder out of scope. It falls under the category of >>>>>> Appendables#append with repeat. A much bigger project. >>>>>> >>>>>> All comments welcome. Especially around the need for convenience >>>>>> methods, the JavaDoc content and expanding the tests. >>>>>> >>>>>> — Jim >>>>>> >>>>>> [1] webrev: http://cr.openjdk.java.net//oj/home/jlaskey/8197594/webrev-00 >>>>>> [2] jbs: https://bugs.openjdk.java.net/browse/JDK-8197594 >>>>>> >