为啥会出现cannot be cast to java.lang.String

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥会出现cannot be cast to java.lang.String相关的知识,希望对你有一定的参考价值。

public class Xliehua extends javax.swing.JFrame
public Xliehua()
initComponents();

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
String[] sz=new String[2];
sz[0]=jTextField1.getText();
sz[1]=jTextField2.getText();
FileOutputStream fo = null;
try
fo = new FileOutputStream("data.ser");
catch (FileNotFoundException ex)
Logger.getLogger(Cxhck.class.getName()).log(Level.SEVERE, null, ex);

ObjectOutputStream so;
try
so = new ObjectOutputStream(fo);
so.writeObject(sz);
so.close();
catch (IOException ex)
Logger.getLogger(Cxhck.class.getName()).log(Level.SEVERE, null, ex);


private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
String[] zs=new String[2];
JFileChooser ff=new JFileChooser();
ff.showOpenDialog(null);
File fs=ff.getSelectedFile();
try

FileInputStream fis = new FileInputStream(fs);
ObjectInputStream is = new ObjectInputStream(fis);
for (int l = 0; l < zs.length; l++)
zs[l]= (String) is.readObject();

jTextField1.setText(zs[0]);
jTextField2.setText(zs[1]);
is.close();
fis.close();

catch(Exception e)

System.out.println(e.getMessage());

很明显是类型转换错误。即Integer 类型不能转成String类型。 

解决方案:

1.直接使用tosting的方式 

String str = entry.value().toString(); 

2.使用String类的静态方法valueOf()

String str = String.valueOf(entry.value());

3. String orderNo = ((String[])request.getAttribute("orderNo"))[0]; 

4. 将错误中的(String)强制转换类型修改为    object.toString()

扩展资料:

如果使用Kafka的javaApi向kafka发送消息时提示类似的错误:

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to

则我们在发送消息时,需要根据自己发送的消息类型来指定序列化类。比如我们发送字符串消息,在构造生产者时增加以下配置:

Properties props = new Properties();props.put("serializer.class", "kafka.serializer.StringEncoder");

这样就可以发送字符串消息了

参考资料:百度百科——Java

参考技术A

因为id这个字段在数据库中是int类型的,返回Map接收查询结果,接收时使用了List<Map<String,String>>,然后在取出id的时候就出现了转换异常

修改封装方法里取id的地方的代码,用toString()方法转换成字符串类型就解决了

参考技术B 类型转换错误,不是String类型的实例转成String的异常。
把zs[l]= (String) is.readObject();这行代码改为zs= (String[]) is.readObject();即可。
Java的类型转换异常(ClassCastException),是开发中最常见的异常之一,比如把一个本身为String的对象强行转换成List时,就会抛出此异常。当然,一般情况下这种错误很容易就从异常信息中发现原因并纠正,通常对于此类问题我们的想法就是:class文件相同,即字节码相同,那么实例化产生的对象肯定也会相同类型。
参考技术C 哪一行的问题,
问题是说吧不是String类型的实例转成String的异常。
看样子是这行
zs[l]= (String) is.readObject();

你读到的应该是个String数组。你应该这样
zs= (String[]) is.readObject();
然后用zs[1]就取到第一个了。本回答被提问者采纳

cannot be cast to javax.servletFilter

java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)

原因:可能是包冲突了 One of your dependencies are including a servlet-api into your war file which causes that behavior. Using mvn dependency:tree, you can find out which of your dependency is that. After that you need to exclude the servlet-api as follows:

<dependency> 解决办法:

<dependency>
  <groupId>[VALUE]</groupId>
  <artifactId>[VALUE]</artifactId>
  <version>[VALUE]</version>
  <exclusions>
    <exclusion>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
    </exclusion>
  </exclusions>
</dependency>

例子:

<!-- 去除自带servlet依赖避免冲突-->
		<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
        <exclusions>
            <exclusion>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

以上是关于为啥会出现cannot be cast to java.lang.String的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot统一返回处理出现cannot be cast to java.lang.String异常

连接Mysql时出现java.math.BigInteger cannot be cast to java.lang.Long问题

安卓出现错误: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditT

java.lang.String cannot be cast to java.util.Date

java.math.BigDecimal cannot be cast to java.lang.String

flink JDBC 类型转换 java.time.LocalDateTime cannot be cast to java.sql.Timestamp