`
hubin4
  • 浏览: 96639 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

for java beginner 9 java反射的概念和Constructor 类

    博客分类:
  • JAVA
阅读更多
java 反射 的概念 和 Constructor 类

反射就是把 Java 类中的各种成分映射成相应的 JAVA类。

JAVA类 就是那个字节码 有包名 getPackage() 后 得到一个类 Packgae

类似的
把 各个方法  映射 成 Method 类
。。。。。。。。。。。。。

先介绍反射 时 用到的最重要的一个 类
Constructor 构造函数

======================================
package com.ncs;

import java.lang.reflect.Constructor;

public class ReflectTest {
	public static void main(String[] args) throws Exception {
		
		//下面这行  有 处理 异常 ClassNotFoundException 谁知道有没有这个类
		//这是得到所有的 构造 方法
		Constructor[] constructors = Class.forName("java.lang.String").getConstructors();
		
		//得到某一个特定的构造 方法 有 处理 异常 NoSuchMethodException 谁知道有没有这个 构造 方法
		//注意,一个类的构造 方法N 多,不可能用 123去指定某一个特定的构造方法,只可以指定 参数 
		//这里getConstructor(StringBuffer.class);是1.5新的 可变参数 以前是数组类型参数
		//现在是 Class<?>... parameterTypes
		Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);
		
		//我现在要做一件事情 new String(new StringBuffer("abc"));
		//我想用反射做
		//上面已经得到了那个 构造函数 ,而且参数也是 StringBuffer的
		//Constructor类有一个重要的 方法newInstance(arg0); 每call一次就弄一个新的
		//当然,参数不是 StringBuffer也可以编译过,
		//编译器只管你这个是 构造 方法么就OK了,管你是什么参数
		//编译器还不知道这个constructor是对应参数为StringBuffer的构造函数呢!!
		//甚至编译器连这个 constructor 是哪个类的都不管
		// 编译器只知道这个是 Constructor 的实例,这个实例有个方法叫newInstance,参数可变
		//编译器其他什么都不管
		//所以我们还要自己把结果 强制 转化为自己需要的类型(String)
		//但是 ,到了 runtime,JVM就清楚的知道了,
		//所以有 运行时错误 和 编译时错误之分
		//就是说你现在传 一个String类型,compiler不会说你错,但是你一运行,JVM就说不对了
		String myString = (String)constructor.newInstance(new StringBuffer("abc"));
		
		
		
		//test
		System.out.println(myString.charAt(2));
		
		//out c OK!S
		
		//上面的方式有三步,中间需要 constructor 
		//有人偷懒,因为很多类 都有 规定 必须 要有无参 构造函数,所以有个方法
		//Class.newInstance() 直接call 无参 构造函数
		String s1 = (String)Class.forName("java.lang.String").newInstance();
		
		
	}
}

==========================================
分享到:
评论

相关推荐

    java for the beginner

    introduce in english

    Java A Beginner's guide

    他的Java相关著作包括《Java: The Complete Reference》、《Herb Schildt’s Java Programming Cookbook》和《Swing: A Beginner’s Guide》等。除了Java,席尔德特还广泛地撰写了关于C、C++和C#的书籍。 本指南的...

    JAVA A beginner's guide sixth edition

    以上知识点概述了《JAVA A beginner's guide sixth edition》这本书的编写背景、作者及技术审稿人信息、Java语言介绍和相关的编程语言标准化工作,以及版权信息。这些内容对于Java初学者了解Java编程和编程书籍出版...

    Java A Beginner's Guide(6th) 无水印pdf

    Java A Beginner's Guide(6th) 英文无水印pdf 第6版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系...

    Java: A Beginner's Guide 5th Edition

    Fully updated to cover Java Platform, Standard Edition 7 (Java SE 7), Java: A Beginner's Guide, Fifth Edition starts with the basics, such as how to compile and run a Java program, and then discusses...

    Java and Algorithmic Thinking for the Complete Beginner – Compact Edition

    This book is for anyone who wants to learn computer programming and knows absolutely nothing about it. If you are wondering whether this book is going to teach you how to create amazing applets or ...

    Java - Java A Beginner's Guide 9th edition

    ### Java - Java A Beginner's Guide 9th edition #### Java基础知识概述 本书旨在为初学者提供全面、深入的Java编程入门指导。Java是一种广泛使用的面向对象编程语言,它以其跨平台性、安全性以及丰富的类库支持...

    Pentaho 8 Reporting for Java Developers azw3

    Pentaho 8 Reporting for Java Developers 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Java_Programming_for_the_Absolute_Beginner.rar_absolute java_jav

    "Java_Programming_for_the_Absolute_Beginner.rar_absolute java_jav"这个标题表明这是一份针对完全初学者的Java编程教程,可能包含了从最基础的概念到实际编程技巧的全面介绍。 1. **基础概念**:在学习Java之前...

    Java2:A Beginner's Guide Second Edition 原版 pdf

    最后,本书可能会介绍一些高级主题,如反射、泛型、枚举、注解和Java的并发编程工具,这些都是Java程序员进阶必备的知识。 总之,《Java2: A Beginner's Guide Second Edition》是一本全面的Java入门教程,通过学习...

    Java 7 A Beginner’s Tutorial, 3rd Edition.pdf

    - 面向对象编程(Object-Oriented Programming, OOP)是 Java 的核心特性之一,通过封装、继承、多态等概念实现代码复用和模块化。 - **本书特色:** - 适合 Java 初学者阅读,提供全面的基础知识介绍。 - 包括...

    Java Programming for the Absolute Beginner

    2. **类与对象**:讲解面向对象编程的基本概念,如类的定义、对象的创建、封装、继承和多态等。 3. **数组**:如何声明、初始化和操作数组,以及一维和多维数组的应用。 4. **异常处理**:理解Java中的异常类型,...

    Java-Programming-for-Beginner:书

    12. **反射与注解**:反射允许程序在运行时检查类、接口和对象的信息,而注解为代码提供了元数据,增强了代码的可读性和可维护性。 13. **泛型与枚举**:泛型提供了一种方式来限制容器存储的数据类型,枚举则是一种...

    Java A Beginner's Guide(6th) epub

    Java A Beginner's Guide(6th) 英文epub 第6版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Java A Beginner’s Guide(7th) epub

    Java A Beginner’s Guide(7th) 英文epub 第7版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Java A Beginner's Guide(6th) mobi

    Java A Beginner's Guide(6th) 英文mobi 第6版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Java A Beginner’s Guide(7th) azw3

    Java A Beginner’s Guide(7th) 英文azw3 第7版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    java beginner guide

    ### Java初学者指南知识点概述 ...本指南旨在为初学者提供一个全面的入门指南,帮助读者快速掌握Java的基础知识和核心概念。通过不断实践和深入学习,相信每位读者都能成为一名合格的Java程序员。

Global site tag (gtag.js) - Google Analytics