admin管理员组

文章数量:1794759

spring中遇到的java.lang.ClassCastException中cannot be cast to报错(初学)

spring中遇到的java.lang.ClassCastException中cannot be cast to报错(初学)

关于这个报错,我们可能会遇到cannot be cast to(不能将什么类型转换成什么)我遇到问题的场景是在于复制包的时候没有导包。

applicationContext.xml如下

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="www.springframework/schema/beans" xmlns:xsi="www.w3/2001/XMLSchema-instance" xsi:schemaLocation="www.springframework/schema/beans www.springframework/schema/beans/spring-beans.xsd"> <!-- 使用name属性实现构造注入--> <bean id ="myStudent" class="com.bjpowernode.ba03.Student"> <constructor-arg name="myname" value="张三"/> <constructor-arg name="myage" value="20"/> <constructor-arg name="mySchool" ref="myXuexiao"/> </bean> <!--声明School对象--> <bean id="myXuexiao" class="com.bjpowernode.ba03.School"> <property name="name" value="北京大学"/> <property name="address" value="北京海淀区"/> </bean>

School和Student如下

package com.bjpowernode.ba03; public class School { private String name; private String address; public void setName(String name) { this.name = name; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "School{" + "name='" + name + ''' + ", address='" + address + ''' + '}'; } } package com.bjpowernode.ba03; public class Student { private String name; private int age; //声明一个引用类型 private School school; public Student (){ System.out.println("spring会调用类的无参构造器方法创建对象"); } public void setName(String name) {this.name = name; } public void setSchool(School school) {this.school = school; } public void setAge(int age) {this.age = age; } /** * 创建有参数构造方法 */ public Student(String myname,int myage,School mySchool){ System.out.println("Student有参数构造方法"); //属性赋值 this.name=myname; this.age=myage; this.school=mySchool; } @Override public String toString() { return "Student{" + "name='" + name + ''' + ", age=" + age + ", school=" + school + '}'; } }

Mytest03如下

package com.bjpowernode.ba01; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Mytest03 { @Test public void test01(){ //使用spring容器创建对象 //1.指定spring配置文件的名称 String config = "ba03/applicationContext.xml";//注意:该引号内的配置文件必须是resources下的全限定名称,否则会报错 //2.创建表示spring容器的对象,ApplicatContext //ApplicationContext就是表示spring容器,通过容器获取对象 //ClassPathXmlApplicationContext:表示从类路径中加载spring的配置文件 ApplicationContext ac = new ClassPathXmlApplicationContext(config); //从容器中获取某个对象,你要调用对象方法 //getBean("配置文件中的bean的id值") //从容器中获取Student对象 Student myStudent = (Student) ac.getBean("myStudent"); System.out.println("student对象"+myStudent); } }

当Mytest03执行时,会出现如下的错误

Student有参数构造方法

java.lang.ClassCastException: com.bjpowernode.ba03.Student cannot be cast to com.bjpowernode.ba01.Student

由“Student有参数构造方法”我们可以知道,配置文件创建了对象并且执行了,即问题不在配置文件和Student和School里面,那么问题只能在Mytest03里面。

解决方法导包(导入cannot be cast to 前面的包,即可):

import com.bjpowernode.ba03.Student;

此时

Student有参数构造方法 student对象Student{name=‘张三’, age=20, school=School{name=‘北京大学’, address=‘北京海淀区’}}

Process finished with exit code 0

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

本文标签: 报错javaspringlangcast