什么是交易
CharSequence contentTitle = R.string.value;
Run Code Online (Sandbox Code Playgroud)
错误无法从int转换为CharSequence.有没有办法绕过这个或我错过了什么?我试过了
String s = R.string.value + "";
CharSequence contentTitle = s;
Run Code Online (Sandbox Code Playgroud)
它返回整数值.有帮助吗?
我正在为包设计一个公共接口(API).我想知道,我应该CharSequence普遍使用而不是String.(我主要谈的是公共接口).
这样做有什么缺点吗?这被认为是一种好习惯吗?
如何将它用于类似标识符的目的(当值与基于散列的容器中的集合匹配时)?
我该如何改变这样的事情:
CharSequence cs[] = { "foo", "bar" };
Run Code Online (Sandbox Code Playgroud)
至:
CharSequence cs[];
cs.add("foo"); // this is wrong...
cs.add("bar"); // this is wrong...
Run Code Online (Sandbox Code Playgroud) A String 是-a CharSequence.Java库中的许多方法都接受,CharSequence因此它们可以更普遍地运行.有些classe有一个String方法(例如Writer.write(String)),并且还Appendable使用等效CharSequence方法(例如Writer.append(CharSequence))实现.
如果我正在编写一个委托给这样一个类的类,并且需要一些文本输入,我可以选择输入为a String或a CharSequence.通过为客户提供更多选项,选择后者可以使课程更加灵活.但我没有看到太多的代码这样做:文本参数几乎总是一个String而不是一个CharSequence.是否有使用的缺点CharSequence?是否有性能受损?或者只是程序员的intertia或无知导致使用String而不是CharSequence?
相比
class XMLWriter {
private final Writer writer;
// more stuff here
public void writeComment(String text) {
writer.write("<!-- ");
writer.write(text);
writer.write(" -->");
}
}
Run Code Online (Sandbox Code Playgroud)
同
class XMLWriter {
private final Writer writer;
// more stuff here
public void writeComment(CharSequence text) {
writer.write("<!-- ");
writer.append(text);
writer.write(" -->"); …Run Code Online (Sandbox Code Playgroud) 我的代码是:
public static void ToastMemoryShort (Context context) {
CharSequence text = getString(R.string.toast_memoryshort); //error here
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
return;
}
Run Code Online (Sandbox Code Playgroud)
但我得到"无法在Eclipse中对类型Context"中的非静态方法getString(int)进行静态引用.我正在准备本地化我的应用程序(将所有硬编码字符串转换为资源),所以我在哪里:
getString(R.string.toast_memoryshort)
Run Code Online (Sandbox Code Playgroud)
我之前有一个硬编码的字符串,很好.
我不确定这里发生了什么(Java noob).请问有人可以开导我吗?
非常感谢
巴兹
我看不出制作String.indexOf界面的任何缺点CharSequence.好处是其他类如StringBuffer或StringBuilder也需要实现indexOf方法.
那么有什么设计理由indexOf应该只是其中的一部分String吗?
谢谢.
如果我正在使用Java流,并以Unicode字符IntStream的代码点号结尾,那么如何渲染诸如这样的?CharSequenceString
String output = "input_goes_here".codePoints(). ??? ;
Run Code Online (Sandbox Code Playgroud)
我codePoints()在多个接口和类上都找到了一种方法,它们都会生成一个IntStream代码点。但是我还没有找到任何接受相同方法的构造函数或工厂方法。
CharSequence::codePoints() ? IntStreamString::codePoints() ? IntStreamStringBuilder::codePoints() ? IntStream我在寻找相反的东西:
?如何从代码点实例化一个String或CharSequence多个IntStream?
我正在制作吞吐量计算器,用户输入数据以及下载或上传所需的持续时间,我的目的是以不同的单位显示吞吐量.
但是,我找不到将float转换为CharSequence的方法,因此我可以将它附加到TextView.
任何帮助表示赞赏.
谢谢
我想使用指定的CharSet将一个CharSequence写入OutputStream.基本上,当调用write(String)时,使用相同CharSet初始化的Writer会做什么.
问题是,有很多CharSequences要写,有些很大.更复杂的是,可以将所有内容写入多个OutputStream.我可以通过使用(实际上我目前已经以这种方式实现)轻松实现它:
byte[] rawBytes = CharSequence.toString().getBytes(CharSet)
for (OutputStream out : outputTargets) {
out.write(rawBytes);
}
Run Code Online (Sandbox Code Playgroud)
但显然String在这里是完全不需要的垃圾对象,byte []数组也是如此.我正在寻找一种方法,允许我直接进行编码而不需要中间对象.令人惊讶的是,这似乎是不可能的 - 无论我在JRE中看到CharSequence被接受的地方,它都会在任何工作完成之前迅速转换为字符串.
CharSet的大部分(全部?)转换工作似乎都是在非公共类中完成的,所以我没有找到任何方式以透明和合法的方式访问任何一个.
如何避免垃圾/ JRE的CharSet编码设施直接使用?