Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将CharSequence与String进行比较-Android_Java_Android_String_Charsequence - Fatal编程技术网

Java 如何将CharSequence与String进行比较-Android

Java 如何将CharSequence与String进行比较-Android,java,android,string,charsequence,Java,Android,String,Charsequence,我有一个类将文本放入arrayList。然后,当我尝试将变量与字符串(如==“test”)进行比较时,它会将所有变量转换为charsequence;它不起作用这里是我用来获取变量的代码 class Item { String descs; public Item (String descs){ this.descs = descs; } publi

我有一个类将文本放入arrayList。然后,当我尝试将变量与字符串(如==“test”)进行比较时,它会将所有变量转换为charsequence;它不起作用这里是我用来获取变量的代码

class Item {
            String descs;

            public Item (String descs){

                 this.descs = descs;

                 }


            public CharSequence getDescs() {
                return descs;
            }
        }
这是将其与字符串进行比较的代码

 if(p.getDescs().toString() == "trash"){

          descsView.setVisibility(View.GONE);

                            }

          else{
              descsView.setText(p.getDescs());

                            }

我知道p.getDescs()等于trash,因为当它为descsView设置文本时,它被设置为trash。那么为什么第一个if语句不起作用呢?

如果descs是您的CharSequence变量:

descs.toString().equals("SomeString");

使用
.equals
.equalsIgnoreCase
比较字符串

     if(p.getDescs().toString().equals("trash"))
也检查一下这个


您需要使用
equals()
方法进行字符串比较

if(p.getDescs().toString().equals("trash")){
    descsView.setVisibility(View.GONE);
    }
else{
    descsView.setText(p.getDescs());
    }

有关更多信息,请参阅。

最好的方法应该是这样

if("trash".equals(p.getDescs()){
    descsView.setVisibility(View.GONE);
    }
else{
    descsView.setText(p.getDescs());
    }
或者,如果比较不区分大小写,则

 if("trash".equalsIgnoreCase(p.getDescs()){
        descsView.setVisibility(View.GONE);
        }
    else{
        descsView.setText(p.getDescs());
        }
功能

 <String>.equalus(Object)
运行时可能会出现错误 以下链接可能会有所帮助

简介
CharSequence
是一种通用类型,包括其他类型,如
String
StringBuilder
SpannableString
,以及其他类型。如果要比较两个字符串,可以使用
.equals
(请参阅)。但是,如果要将
字符串
字符序列
进行比较,则必须确定要比较的内容,因为您可能要将
字符串
字符串生成器
SpannableString
或其他内容进行比较

仅比较内容 如果只想将
字符串的内容(即文本)与
字符序列的内容进行比较,而不关心类型,则可以使用
String.contentEquals()

比较内容和类型 如果您还想确保除了内容之外,这些类型都是相同的,那么请使用
String.equals()

这是同样类型的

String myString = "hello";
CharSequence myCharSequence = "hello"; // String

boolean areEqual = myString.equals(myCharSequence); // true
另见

当前接受的答案

if(p.getDescs().toString().equals("trash"))
可以简化为

if("trash".contentEquals(p.getDescs()))

苏拉奇的“介绍”回答给出了细节。这是一种直接将CharSequence与字符串进行比较的方法,这是OP所要求的。

我重新打开这个问题,因为它不处理
CharSequence
。当
.equals
返回false时存在有效的情况,这不是因为内容不同,而是因为一个是
字符串
,另一个是
字符串生成器
。我以前不知道
contentEquals()
。这里很有用。加一。
String myString = "hello";
CharSequence myCharSequence = "hello"; // String

boolean areEqual = myString.equals(myCharSequence); // true
if(p.getDescs().toString().equals("trash"))
if("trash".contentEquals(p.getDescs()))