反射 学习笔记之Class类的使用

1  java世界中万事万物皆对象,除了2个特殊情况

  • int float等这些基本数据类型,(但是也都有Integer和Float等封装类做了弥补)
  • java staic定义的,它不是属于对象的,而是属于类的

2  类也是对象,类是java.lang.Class类的实例对象 相当于 "There is a class named Class"
下面用代码说明:“任何一个类都是Class类的实例对象,有三种表示方式”

[java] view plain copy

  1. package com.xsf.Test;  
  2.   
  3. public class classDemo1 {  
  4.     public static void main(String[] args) {  
  5.         Test1 test1 = new Test1();//通过new的方式表示Test1的实例对象  
  6.           
  7.           
  8.         /** 
  9.          * 其实Test1类也是对象是java.lang.Class对象的,如何表示?就不可以通过new的方式 
  10.          * 任何一个类都是Class类的实例对象,有三种表示方式 
  11.          * t1,t2,t3都是Test1的类类型因而都相等 
  12.          */  
  13.           
  14.         Class t1 = Test1.class;//第一种方式,任何一个类都有一个隐含的静态成员  
  15.         Class t2 = test1.getClass();//第二种方式,已知该类的对象通过getclass方法获取  
  16.       
  17.         //t1,t2表示了Test1类的类类型(class Type)  
  18.         /** 
  19.          * 万事万物皆对象 
  20.          * 类也是对象是class类的实例对象 
  21.          * 这个对象我们称为该类的类类型 
  22.          */  
  23.         System.out.println(t1==t2);  
  24.           
  25.         Class t3 = null;//第三种方式  
  26.         try {  
  27.             t3 = Class.forName("com.xsf.Test.ClassDemo1");  
  28.         } catch (ClassNotFoundException e) {  
  29.               
  30.             e.printStackTrace();  
  31.         }  
  32.         System.out.println(t2==t3);  
  33.         //可以通过类的类类型创建该类的实例对象:通过t1,t2,t3创建Test1的实例对象  
  34.         try {  
  35.             Test1 t4 = (Test1)t1.newInstance();//需要有无参数的构造方法  
  36.             t4.init();  
  37.         } catch (InstantiationException e) {  
  38.               
  39.             e.printStackTrace();  
  40.         } catch (IllegalAccessException e) {  
  41.               
  42.             e.printStackTrace();  
  43.         }  
  44.     }  
  45. }  
  46.   
  47. class Test1{  
  48.      void init() {  
  49.         System.out.println("Hello World!");  
  50.   
  51.     }  
  52. }  

转自:http://blog.csdn.net/xsf50717/article/details/44964605

时间: 2024-09-13 19:42:48

反射 学习笔记之Class类的使用的相关文章

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记目录 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle IConductor  ,Conducto

反射 学习笔记之动态加载类

1 Class.forName("类的全名")不仅表示了类的类类型,还代表了动态加载类 2 编译时刻加载类称之为静态加载,运行时刻加载类是动态加载类 3 new 对象是静态加载类,在编译时刻就需要加载所有的可能使用的类(编译时刻加载) 用Edit写一个reflectDemo2,里面有俩个命令行参数判断的代码word,execl,我们在同一个文件夹下写一个word类不写execl类,我们假如只想运行word不想运行execl,但是很不幸,由于这是静态加载,javacreflectDemo

C# 参考:反射 -- 学习笔记整理,概念与应用

1. 什么是反射 Reflection,中文翻译为 反射.         这是.Net中获取 运行时类型信息 的方式,.Net的应用程序由几个部分:'程序集(Assembly)'.'模块(Module)'.'类型(class)'组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成部分的相关信息,例如:     通常程序员面试题,有这样关于反射的解释:反射可以动态地创建类型的实例,还可以将类型绑定到现有对象,或从现有对象中获取类型.然后,可以调用类型的方法或访问其字段和属性. 

JS教程:学习笔记之JS类

背景:接触JavaScript快两年了.从最开始对她充满着好奇,到现在的学习了许多关于她的框架.朋友问我:都有这么多框架,你为何还要去学最底层的面向对象呢?其实这个问题:另一个朋友已经替我回答了.无论以后框架在怎么变,只要了解底层的原理,学起来都是很容易上手的.好了,我们开始学习了. 1.    创建对象: var obj = new Object();//第一种方式. var obj = {};//第二种方法.顺带一句可以通过var arr = [] 来创建数组 2.    给对象的属性赋值

Android学习笔记(7):View类

Android推荐使用XML文件设计用户界面,但实际上所有组件都提供了两种使用方法: 1. 在XML布局文件中设置XML属 2. 在Java程序代码中调用方法 Android提供的官方文档是必须学会使用的,可以去官网,推荐一个网站,里面的文档有一点(但不多)翻译 http://www.android-doc.com/reference/packages.html View类是所有UI组件的基类,其使用方法对所有的组件都是适用的: XML属性 相关方法 说明 android:accessibili

java学习笔记7--抽象类与抽象方法

1.终结类与终结方法 被final修饰符修饰的类和方法,终结类不能被继承,终结方法不能被当前类的子类重写 终结类的特点:不能有派生类 终结类存在的理由: 安全: 黑客用来搅乱系统的一个手法是建立一个类的派生类,然后用他们的类代替原来的类 设计: 你认为你的类是最好的或从概念上你的类不应该有任何派生类 终结方法的特点:不能被派生类覆盖 终结方法存在的理由: 对于一些比较重要且不希望子类进行更改的方法,可以声明为终结方法.可防止子类对父类关键方法的错误重写,增加了代码的安全性和正确性 提高运行效率.

PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception_php实例

使用异常 PHP5 增加了类似其他语言的异常处理模块.在PHP代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获.需要进行异常处理的代码都必须放入到 try 代码块内,以便捕获可能存在的异常.每个try至少对应一个 catch 块.使用多个 catch 可以捕获不同的类所产生的异常.当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行.当然,PHP 允许在 catch 代码块内再次抛出(thr

Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍_python

1. 创建映射类的实例(Instance) 前面介绍了如何将数据库实体表映射到Python类上,下面我们可以创建这个类的一个实例(Instance),我们还是以前一篇文章的User类为例,让我们创建User对象: 复制代码 代码如下: >>> ed_user = User('ed', 'Ed Jones', 'edspassword')>>> ed_user.name'ed'>>> ed_user.password'edspassword'>&g

Android学习笔记(8):ViewGroup类

A ViewGroup is a special view that can contain other views (called children.)  The view group is the base class for layouts and views containers.  This class also defines the ViewGroup.LayoutParams class which serves as the base class for layouts par