On 13/02/2018 06:24, Xueming Shen wrote:
These constructors looks good (for the parameter names then I assume you
meant "src" rather than "bytes" here).
Please help review the proposal to add following constructors and
methods in String
class to take ByteBuffer as the input and output data buffer.
public String(ByteBuffer bytes, Charset cs);
public String(ByteBuffer bytes, String csname);
These four methods encode as many characters as possible into the
destination byte or buffer but don't give any indication that the
destination didn't have enough space to encode the entire string. I thus
worry they could be a hazard and result in buggy code. If there is
insufficient space then the user of the API doesn't know how many
characters were encoded so it's not easy to substring and call getBytes
again to encode the remaining characters. There is also the issue of how
to size the destination. What would you think about having them fail
when there is insufficient space? If they do fail then there is a side
effect that they will have written to the destination so that would need
to be documented too.
public int getBytes(byte dst, int offset, Charset cs);
public int getBytes(byte dst, int offset, String csname);
public int getBytes(ByteBuffer bytes, Charset cs);
public int getBytes(ByteBuffer bytes, Charset csn);