- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
A String
is-a CharSequence
. Java 库中的许多方法都接受 CharSequence
所以they operate more generally .有些类(class)有 String
方法(例如 Writer.write(String)
)并实现 Appendable
具有等价的 CharSequence
方法(例如,Writer.append(CharSequence)
)。
如果我正在编写一个委托(delegate)给这样一个类的类,并且需要一些文本输入,我可以选择该输入是 String
或 CharSequence
.通过为客户提供更多选择,选择后者使类(class)更加灵活。但我没有看到太多这样做的代码:文本参数几乎总是 String
而不是 CharSequence
.使用 CharSequence
是否有缺点? ?是否有性能影响?或者仅仅是程序员的惯性或无知导致使用 String
而不是 CharSequence
?
比较
class XMLWriter {
private final Writer writer;
// more stuff here
public void writeComment(String text) {
writer.write("<!-- ");
writer.write(text);
writer.write(" -->");
}
}
与
class XMLWriter {
private final Writer writer;
// more stuff here
public void writeComment(CharSequence text) {
writer.write("<!-- ");
writer.append(text);
writer.write(" -->");
}
}
最佳答案
引用 CharSequence
Javadoc:
This interface does not refine the general contracts of the
equals
andhashCode
methods. The result of testing two objects that implementCharSequence
for equality is therefore, in general, undefined. Each object may be implemented by a different class, and there is no guarantee that each class will be capable of testing its instances for equality with those of the other. It is therefore inappropriate to use arbitraryCharSequence
instances as elements in a set or as keys in a map.
因此 IMO 在使用 CharSequnce 作为 String 的替代品之前,我们必须三思而后行。
关于java - 为 API 在 CharSequence 和 String 之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8445311/
场景 1: 我得到了 Set来自某处,这意味着我无法控制该集合的创建方式。 Set dataSet = GET_DATA_SET(); 我想转换 Set 中的数据至Set 。有没有一种有效的方法可以在
我一直认为 CharSequence[] 和 String[] 本质上是一样的,但是: 我有一些代码具有以下内容: CharSequence[] mEntries; ... String[] mEnt
存在类转换问题。请告诉我如何转换这个。我想要这个 ArrayList在我的 CharSequence[]名为 Contacts . java.lang.ClassCastException (在 An
setText(CharSequence, TextView.BufferType) 和 setText(CharSequence) 有什么区别,什么时候应该使用它们? 最佳答案 setText (C
虽然 String 实现了 CharSequence,但 Java 不允许这样做。做出此设计决定的原因是什么? 最佳答案 之所以禁止这样做是因为它不是类型安全的: public class MyEvi
我无法使用 API 26 更新应用。当我尝试运行项目时出现以下错误 错误: "ServerRunningNotification.java": error: cannot find symbol me
我有一个名为 customObjectList 的自定义对象列表。我想让它绑定(bind)到AlertDialog.Builder.setMultiChoiceItems(),需要先把它转换成Char
public void drawCities(ArrayList cities, Graphics page) { for(int i=0; i(TravelPanel.java:26) at
我需要显示一个对话框,其中包含可供选择的颜色列表。我找到了这个解决方案 here . CharSequence colors[] = new CharSequence[] {"red", "green
如何在Java中将String转换为CharSequence? 最佳答案 由于 String IS-A CharSequence,您可以在需要 的任何地方传递 String CharSequence,
我有一个 Map 并使用 转换为 charsequence[] final CharSequence[] treatmentNameList = treatmentListMap.keySet().t
我定义了以下CharSequence: final CharSequence[] videoQualities = {"any", "medium", "high", "hd"}; 我收到两个字符串值
为什么 String 类中的某些方法具有 CharSequence 类型的参数而其他方法具有 String 类型的参数,是否有逻辑解释? 例如: public String replace(CharS
这将返回一个空指针。 array[0].toString() 也是如此。我做错了什么? final CharSequence[] array = res.getTextArray(R.array.ar
我可以像这样组合两个 CharSequence 变量吗? if (status == 1) { for (int i = 0; i < get.length(); i++) {
有什么方法可以将 CharSequence 转换为 char 数组?为什么接口(interface)没有获取字符数组的方法? 最佳答案 我首先将 CharSequence 转换为 String 然后将
我有一个使用 charseqquence 的简单 Java 代码: static class baloon { CharSequence Titles[]; public
有这个代码: if (cs.equals(keywordUnderProcess)) { } else { } cs 和keywordUnderProcess 都是CharSequence,值为sta
CharSequence[] items = { “Google”, “Apple”, “Microsoft” }; 如果CharSequence是一个接口(interface),那么在上面的例子中我
我正在尝试遍历我的数组列表并打印无效的电子邮件地址。如果地址不包含@符号或句点,则无效。 我收到一个错误,int 无法转换为我的方法的 charsequence。 public static void
我是一名优秀的程序员,十分优秀!