Java面向对象高级部分——通过Class类实例化对象(五十二)
在Class类当中实例化对象是一个最常用的的操作,以后所有的框架的基本原理都是根据这个实现。
正常情况下,我们使用new关键字实例化一个对象,现在我们通过Class类完成,步骤如下:
·根据packeg.class实例化对象
·通过Class类中的 newInstance()
package obc19;public class Main {public static void main(String[] args) {Class<?> c = null;try {c=Class.forName("OopDemo19.Person");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {Person p = (Person) c.newInstance();System.out.println(p.getAge());} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
现在对象实例成功了,以上代码在以后的开发中,特别在使用框架研究框架原理的时候,经常会问到,但是我们这样写事实上忽略一个问题。就是,这种情况该对象所属的类其实要求必须要有无参构造方法。
实例化的时候调用指定的构造方法:
如果一个类当中真的没有无参构造方法,那么我们只能选择调用指定的构造方法来实例化。
package obc19;import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;public class Main {public static void main(String[] args) throws Exception{Class<?> c = null;Person p = null;c = Class.forName("OopDemo19.Person");Constructor<?> cus[] = c.getConstructors();p = (Person)cus[0].newInstance(40);System.out.println(p.getAge());}
}
这种形式相对于前面第一种调用无参构造方法明显来的复杂而且也不是很实用,以后开发中要求习惯性地给每一个实体的类或者有构造方法的类一个无参构造方法。
Java面向对象高级部分——通过Class类实例化对象(五十二)相关推荐
- java面向对象中的抽象,类与对象
一.抽象 什么是抽象?将鸽子和麻雀看做是鸟,这是抽象:将整个空调的行为用遥控代替,遥控就可以看做是空调的抽象:将外貌,种族,语言等等形形色色不同的个体看做是人这样一个概念,这也是抽象. 在编程语言中, ...
- Kotlin学习笔记 第二章 类与对象 第十二 十三节 对象表达式与对象声明 类型别名
参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...
- Effective Java之通过接口引用对象(五十二)
List< ? > list= new ArrayList< ? > Map< ?,? > map = new HashMap< ?,? > 这样使用接 ...
- C++类与对象笔记十二:运算符重载二:左移运算符重载
左移运算符重载:可以打印输出自定义数据类型. 为了输出重载,我们先看看现有的输出函数.输出类型为std下的ostream类型的引用. 标准输出流(全局只能有一个). 返回值类型为ostream,函数名 ...
- 面向对象与上帝造人——类与对象(java篇)
转载我老板的文章 面向对象与上帝造人--类与对象(java篇) 学习和使用java断断续续很多年了,头脑中关于"面向对象编程"的概念总是偏向于使用java来诠释.我是个半路出家的程 ...
- java面向对象第一课,定义类,模拟人的行为:吃饭工作休息
java面向对象第一课,定义类,模拟人的行为:吃饭工作休息 /*** 定义类,模拟人的行为:吃饭工作休息*/ public class Person {//静态特征:成员变量 属性 fieldStri ...
- 高阶Day1:面向对象,面向过程,类和对象的属性和方法创建
高阶Day1:面向对象,面向过程,类和对象的属性和方法创建 高级编程学习4个内容: 面向对象 MySQL数据库 网络编程 并发编程 面向过程(POP)与面向对象(OOP): 类和对象: 类名的定义: ...
- PHP面向对象编程详解:类和对象
PHP面向对象编程详解:类和对象 从OOP的视角看,不应区分语言.无论是C++.无论是Java.无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便可以跨越语言,让你的思想轻松的跳跃.便没 ...
- Java基础语法(七)——类和对象
文章目录 Java基础语法(七)--类和对象 一.类和对象的初步认识 二. 类和类的实例化 1.类的定义 2.实例化对象 3.如何使用类中的数据 三. 类的成员 1. 字段/属性/成员变量 (1)实例 ...
最新文章
- Android自动化测试之路——Provider(一)
- ARM汇编学习之寄存器 之PC
- webapi支持session
- python代码块-python小数据池,代码块的最详细、深入剖析
- python做小程序-【实战案例】利用Python做出趣味版防沉迷小程序
- 高精度加法(C++实现)
- qt for 3520a
- 使用Akka处理1000万条消息
- 和lua的效率对比测试_Unity游戏开发Lua更新运行时代码!
- 汇编指令push,mov,call,pop,leave,ret建立与释放栈的过程
- 台积电5nm进入试产 首批客户苹果华为在列
- java并发编程源码_Java并发编程实战 PDF+源码
- 制作课件需要哪些软件
- 将 Ps 的调色效果保存为预设文件
- 【教程】小米盒子4 刷机,无广告,总是无限重启,刷入2%报错的解决方法
- 政府安全资讯精选 2017年第四期:聚焦美国网络安全新动态
- 《带人要同频,管人要共情》读书笔记
- 猴子吃桃问题(三种方法解决)
- 分布式系统的解决方案,学好这个就够了
- int和long类型取值范围。 基本数据类型 byte , short , char ,int , long , float ,double,boolean类型取值范围