Java反射第一课认识Class类

Class类

1.在面向对象的世界里,万事万物皆对象

(1)先来理解两个问题:

(1)Java语音中,静态的成员,普通数据类型是不是对象?

【普通的数据类型int a = 5 不是面向对象的,但是它有包装类弥补了】

【java静态的东西不是面向对象的,静态的东西不是某个对象的他是属于类的】

所以在面向对象的世界里,万事万物皆对象

(2)类是谁的对象?

类是对象,类是java.lang.Class类的实例对象

Class类的实例对象是什么?---我们每一个对象所属的类就是Class类的实例对象(也就是说Class类的实例对象是类)

(3)Class类的这个对象如何表示

<pre name="code" class="java">package com.edu.reflect;

public class ClassDemo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//Foo的实例对象如何表示:
		Foo foo1 = new Foo();
		//Foo 这个类也是一个实例对象,是Class类的实例对象

		//任何一个类都是Class的实例对象,Class类的实例对象如何表示?3中表示方式
		//Class类的构造方法是私有的,只有java虚拟机可以创建,所以我们不能直接new出Class类的实例对象

		//第一种表示方式。实际在告诉我们任何一个类都有一个隐含的静态成员变量class
		Class c1 = Foo.class;

		//第二中表达方式 已知该类的对象通过getClass方法
		Class c2 = foo1.getClass();

		/*
		 * 官网:c1,c2表示了Foo类的类类型(class type)
		 * 万事万物皆对象
		 * 类也是对象,是Class类的实例对象
		 * 这个对象我们称为该类的类类型
		 */

		//不管c1 or c2 都代表了Foo类的类类型,一个类只可能是Class类
		//的一个实例对象
		System.out.println(c1==c2);//结果输出true

		//第三种表达方式
		try {
			Class c3 = Class.forName("com.edu.reflect.Foo");
			System.out.println(c2==c3);//true
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//我们完全可以通过类的类类型创建该类的对象实例
		try {
			Foo foo = (Foo) c1.newInstance();//需要有无参数的构造方法
			foo.print();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
class Foo{
	void print(){
		System.out.println("foo类方法");
	}
}
				
时间: 2024-10-15 12:28:46

Java反射第一课认识Class类的相关文章

反射 第一课 基础

package cn.itcast.day2; public class ReflectTest { public static void main(String[] args) throws Exception { String str1 = "abc"; Class cls1 = str1.getClass(); Class cls2 = String.class; Class cls3 = Class.forName("java.lang.String");

从C++转向Java的第一课

序:计算机语言的学习,最快捷的方法是从一种语言映射到另一种语言.Java和C++作为最通用的面相对象高级语言,不论从语法或者编程上都极具相似性和可效仿行,这里的可效仿包括——语法理解可效仿和编程规范可效仿.本篇将针对Java语言,作重点牵引. Java开发环境配置 1 安装JDK 版本:jdk1.6.0_27 配置用户变量: a.新建 JAVA_HOME C:\Program Files (x86)\Java\jdk1.6.0_27 (JDK的安装路径) b.新建 PATH %JAVA_HOME

java自学第一课:安装jdk,写第一条java程序

一.安装jdk 二.写第一条java程序 三.认识jdk JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库. JDK包含的基本组件包括: javac – 编译器,将源程序转成字节码 jar – 打包工具,将相关的类文件打包成一个文件 javadoc – 文档生成器,从源码注释中提取文档 jdb – debugger,查错工具 java – 运行编译后的java程序(.class后缀的) appletviewer:小程序浏览器,一种执行HTML文件上的Java

Java反射第二课 动态加载类

在第一节课中我们讲的第三种方法 Class.forName("类的全称"); 不仅表示了类的类类型,还代表了动态加载类 请大家区分编译,运行 编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 现在的开发工具比如eclipse把编译过程给隐藏了 下面做一个实验 比如用记事本编写下面的Office.java文件 class Office { public static void main(String[] args) { if(("Word").equals(ar

【Java 进阶篇】【第一课】String类

引用 String类包含在java.lang包中.这个包会在Java启动的时候自动import,所以可以当做一个内置类(built-in class).我们不需要显式的使用import引入String类. 创建 String类是唯一一个不需要new关键字来创建对象的类.使用的时候需要注意 String s = "Hello World!"; System.out.println(s); 操作 可以用+实现字符串的连接(concatenate),比如: "abc" +

课堂随笔&quot;Java&quot;的第一课JDK的下载,安装和配置

前言:学习JAVA编程的第一步就是安装JDK,这是JAVA开发和安卓开发的第一步.下面就教大家如何从官网下载安装JDK,并测试是否安装成功. 一.JDK的下载 地址:http://www.oracle.com/cn 1.鼠标悬浮在下载上.然后在点击选择Java SE 2.先点击Java SE,再选择下载栏,然后点击进去下载目录 3.进入下载目录先选择 "接受许可协议" 不然官方是不会允许下载的.然后在找到对应的电脑系统和操作系统进行下载 二.JDK的安装 1.先选择开发工具,然后选择安

JAVA学习第一课(初识JAVA)

PS:退ACM集训队了,自己也疯玩了两天,后天就开学了,就正式大二了,该收收心好好学习啦                                                                                  JAVA概述 首先先复习一下基础常识: 1.软件开发 2.人机交互 3.经常使用的DOS命令 一.软件开发 什么是软件? 软件是一系列依照特定顺序组织的计算机数据和指令集合(指令:是处理数据的方式) 常见的软件有:系统软件(DOS.WIndows.

【设计模式】Java设计模式第一课之观察者模式

我们可以用一个生活中的情景来认识一下观察者模式. 在这个时代,可能只有我们家里的老年人还保留着每天看报纸的习惯.报社负责生产内容,把它们组织到一张报纸上,每天进行印刷,然后送到每一个花钱订阅了报纸的用户家里.这样老人家就可以浏览一下每天发生的事情了. 这就是观察者模式最贴切的比喻.订阅者和报社是一对多的关系,每天只要更新了内容,就会统一把报纸送到用户的手里,当然,如果你不想订阅了,也可以退订.报社不知道你的状态,也不会关心你到底有没有看报纸,它的职责就是每天准时的把报纸送到你的家里. 下面是我看

Java 反射的用法 有关Class类的解释

package com.imooc.test; public class ClassDemo1 { public static void main(String[] args) { Foo fool = new Foo();//foo1就表示出来了 //Foo 这个类也是一个实例对象,Class类的实例对象,如何表示呢 //任何一个类都是Class的实例对象,这个实例对象有三种表示方式 //第一种表示方式---> 实际在告诉我们任何一个类都有一个隐含的静态成员变量class Class cl =