对象实例化错误

简介: 对象实例化错误

1 问题

在项目开发过程中如果你的项目中出现如下情况:则说明遇到对象实例化报错的问题。

2 方法

  1. .先分析报错原因,报错时,一定要看主要问题,对于遇到java.lang.InstantiationException实例化异常一般遇到这类问题,有两种情况。
  2. .第一种,要实例化的对象是一个接口或者是抽象类等无法被实例化的类。

解决方法就是在使用反射的机制时,由于抽象父类中的构造方法不是public的,所以导致异常的出现,其实很简单,只要将需要反射的类中的相应构造方法改为public即可。

  (3).这个异常多半是由于通过反射在实例化的时候,对应的类里面覆盖了无参构造而导致无法实例化,由于创建类的时候,默认有一个无参构造,前提是没有其他构造方法,如果没有明确的将无参构造写出来,该类就是缺少无参构造了,也就导致了无法实例化。

解决方法就是建议在创建类的时候,建议保留(显式的写出来)无参构造。


3 结语

  总结原因:遇到第一种情况只需将需要反射的类中的相应构造方法改为public就行了。而遇到第二种则要通过反射来为某个类创建实例的时候,需要该类存在无参构造,不然就会抛出InstantiationException该异常。所以最好还是把无参构造保留的好!(ps:如果无参构造的修饰符被修改为其他的protected private default,将会出现另一个异常java.lang.IllegalAccessException)

目录
相关文章
|
6天前
|
设计模式
在静态方法中访问类的实例属性和方法时会发生什么?
总之,静态方法主要用于处理与类本身相关的操作和逻辑,不应该直接访问类的实例属性和方法。如果需要在静态方法中使用与实例相关的信息,应该通过合理的参数传递或其他设计模式来实现,以保持代码的清晰性和面向对象设计的原则。
35 8
|
6天前
|
JSON 程序员 C#
使用 C# 比较两个对象是否相等的7个方法总结
比较对象是编程中的一项基本技能,在实际业务中经常碰到,比如在ERP系统中,企业的信息非常重要,每一次更新,都需要比较记录更新前后企业的信息,直接比较通常只能告诉我们它们是否指向同一个内存地址,那我们应该怎么办呢?分享 7 个方法给你!
|
6月前
|
C++
c++类&对象
c++类&对象
50 3
|
6月前
|
存储 Java 编译器
类、对象、方法
摘要: 本文介绍了面向对象编程的概念,以京东购买手机为例,展示了如何通过分类和参数选择商品,强调软件与现实生活的对应关系。柯南三步走揭示了京东如何通过搜索和筛选帮助用户找到所需商品,而这一切背后的编程思想即为面向对象编程。面向对象编程涉及抽象、自定义类型和实例化对象等步骤,其中自定义类型(如Java中的类)用于封装现实生活中的复杂数据。文章还讲解了如何定义类、实例化对象以及访问权限修饰符、构造方法、this关键字、方法的使用,强调了方法参数和返回值在不同数据类型上的处理差异。整个讨论旨在阐明Java中面向对象编程的基本原理和实践应用。
44 5
|
6月前
|
存储 C#
C#对象和类
C#对象和类
45 0
|
6月前
|
存储 C++
C++对象和类
C++对象和类
38 0
|
6月前
|
存储 算法 Java
第 4 章 对象与类(上)
第 4 章 对象与类
79 0
|
6月前
|
存储 Java 编译器
第 4 章 对象与类(下)
第 4 章 对象与类
136 0
|
开发框架 .NET
实例化对象时的()什么意思?
实例化对象时的()什么意思?
|
编译器 C语言 C++
C++ 类 & 对象
【摘要】 C++ 类 & 对象C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。C++ 类定义定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是...