2.注意:.class()、getClass()、Class.forName()、getClassLoader()的区别和联系
  a.getClass(),是获取运行时的类:
    一个java.lang.Class对象代表了Java应用程序在运行时所加载的类或接口实例,也就是

说被加载的类在JVM中以Class的实例存在,Class对象由JVM自动产生。通过Object的

getClass()方法来获取每一个对象对应的Class对象,或的Class对象之后可以用Class对

象上的方法取得类的信息。
    例子:
     String name="john";
     //获得name对象的Class实例
      Class stringClass=name.getClass();
     //下面可以用stringClass实例获取name对象的相关信息,可以看API文档,这里只举两

// 个方法
     System.out.println("name对象的类型:"+stringClass.getName());
     System.out.println("name对象的父类:"+stringClass.getSuperclass().getName

());
  b.Class.forName()是通过类名来获得类:
    在一些应用程序中,无法事先知道用户将加载什么类,而必须用户指定类名称以加载类

,可以用Class的静态方法forName()方法实现动态加载类。
  c.getClassLoader()是获得类的加载器。
    例如String.class,代表的是调用字节码文件,来获取一个String的类型。
------------------------------------------------------------------------------
下面是一个完整的对getClass()和Class.forName()解释的例子,用到反射进行控制:
package com.credream.refelect;

import java.lang.reflect.*;

public class ClassDemo
{
 public static void main(String[] args) 
 {
  System.out.println("****************getClass()的例子*******************\n");
  String name="john";
  //获得name对象的Class实例
  Class stringClass=name.getClass();
  //下面可以用stringClass实例获取name对象的相关信息,可以看API文档,这里只举两个方


  System.out.println("name对象的类型:"+stringClass.getName());
  System.out.println("name对象的父类:"+stringClass.getSuperclass().getName());

/*结果:
 *   name对象的类型:java.lang.String
  name对象的父类:java.lang.Object*/

System.out.println("\n****************forName()的例子*******************\n");
  //举forName()的例子
  //动态加载java.util.ArrayList类
  //得到类的Class实例后利用Class的方法取得类相关信息
  //里面有好多方法我就不解释了,你可以参考API文档
  try
  {
   Class c=Class.forName("java.util.ArrayList");
   int mod=c.getModifiers();//注意这里可以查看:Modifier类的源码,这里是给每一个修

饰符定义了一个int型的值;进行了转换
   System.out.println("-------------Modifier.toString(mod)----------");
   System.out.println(Modifier.toString(mod));
   System.out.println("-------------Modifier.toString(mod)----------");
   if(Modifier.isInterface(mod)){//判断是否是一个接口,如果是就打印出来
    System.out.print(" interface");
   }
    else{
    System.out.print(" class ");//
   System.out.println(c.getName()+"{");//java.util.ArrayList{

System.out.println("\t//********成员变量**********");

Field[] field=c.getDeclaredFields();//得到所有变量的数组
   for(Field f:field)
   {
  System.out.println("------------Modifier.toString(f.getModifiers

()------------");
    System.out.println("\t"+Modifier.toString(f.getModifiers()));//得到变量的修饰

符:private static final
    System.out.println("------------Modifier.toString(f.getModifiers

()------------");
    System.out.println("-----------f.getType().getName

()-----------------------");
    System.out.println(" "+f.getType().getName());//得到变量的类型名字: long
    System.out.println("-----------f.getType().getName

()-----------------------");
    System.out.println(" "+f.getName()+";");//得到变量的名字:serialVersionUID;
   }
   System.out.println("\t//********构造方法**********");

Constructor[] constructor=c.getDeclaredConstructors();//
   for(Constructor con:constructor)
   {
    System.out.print("\t"+Modifier.toString(con.getModifiers()));//得到构造方法的

修饰符public
    System.out.println(" "+con.getName()+"();");//得到构造方法的名字

java.util.ArrayList();
   }
   System.out.println("\t//*********成员方法*************");
   Method[] method=c.getDeclaredMethods();
   for(Method mhd:method)
   {
    System.out.print("\t"+Modifier.toString((mhd.getModifiers())));//获得成员方法

的修饰符public 
    System.out.print(" "+mhd.getReturnType().getName());//获得成员方法的返回类

型;void
    System.out.println(" "+mhd.getName()+"()");//获得成员方法的name:add()
   }
   System.out.println("}");
  }
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
  
 }
}
----------------------------------------------------------------------------
下面是:Modifier类的源码:
由于篇幅太长贴出部分代码:
----------------------------------------
  public static final int PUBLIC           = 0x00000001;
  public static final int PRIVATE          = 0x00000002;
--------------------------------------------------------
public static String toString(int mod) {
StringBuffer sb = new StringBuffer();
int len;

if ((mod & PUBLIC) != 0) sb.append("public ");
if ((mod & PROTECTED) != 0) sb.append("protected ");
if ((mod & PRIVATE) != 0) sb.append("private ");

/* Canonical order */
if ((mod & ABSTRACT) != 0) sb.append("abstract ");
if ((mod & STATIC) != 0) sb.append("static ");
if ((mod & FINAL) != 0) sb.append("final ");
if ((mod & TRANSIENT) != 0) sb.append("transient ");
if ((mod & VOLATILE) != 0) sb.append("volatile ");
if ((mod & SYNCHRONIZED) != 0) sb.append("synchronized ");
if ((mod & NATIVE) != 0) sb.append("native ");
if ((mod & STRICT) != 0) sb.append("strictfp ");
if ((mod & INTERFACE) != 0) sb.append("interface ");

if ((len = sb.length()) > 0) /* trim trailing space */
   return sb.toString().substring(0, len-1);
return "";
    }
----------------------------------------------
 public static boolean isAbstract(int mod) {
return (mod & ABSTRACT) != 0;
    }
---------------------------------------------------
 public static boolean isInterface(int mod) {
return (mod & INTERFACE) != 0;
    }
----------------------------------------------------------------------
就先写这么多吧;有不对的地方希望大家指正;

java零碎要点---class()、getClass()、Class.forName()、getClassLoader()的区别和联系--又不详细的地方求补充相关推荐

  1. java零碎要点---struts2中redirect和redirectAction的区别

    struts2中redirect和redirectAction的区别 struts2中关于result的返回类型一般我们是转发到一个jsp页面或者是html页面等,但是struts2中的result的 ...

  2. java零碎要点009---java实现服务器心跳机制,TCP握手

    心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制. 应用场景: 在长连接下,有可能很长一段时间都没有数据往来.理论上说,这个连接是一直保持连接的,但是实际 ...

  3. java零碎要点---Tesseract 3.0,Java OCR 图像智能字符识别技术,可识别中文

    2.Java OCR 图像智能字符识别技术,可识别中文  几天一直在研究OCR技术,据我了解的情况,国内最专业的OCR软件只有2家,清华TH-OCR和汉王OCR,看了很多的OCR 技术发现好多对英文与 ...

  4. java零碎要点013---java lambda 表达式中的双冒号的用法 ::

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 双冒号运算就是Java中的[方法引用],[方法引用]的格式是 类名::方法名 注意是方法名哦,后面 ...

  5. java零碎要点013---java 根据“|”分割字符串需要使用“\\|” 双反斜杠做特殊处理

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 例如:需要加\\,要不然分割的就不对了 String a="abc|d"; S ...

  6. JAVA零碎要点016---java去除List中的重复数据_各种方法_随时更新

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 1. 循环list中的所有元素然后删除重复 public static List removeDu ...

  7. JAVA零碎要点015---java BigDecimal常见操作_加减乘除操作_比较_取几位小数四舍五入_随时更新

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 之前项目都很少用这个BigDecimal啊,最近这个项目对精度要求高,一个电视购物,广告拍摄,排挡 ...

  8. JAVA零碎要点014---java+selenium环境搭建_浏览器自动化测试框架

    JAVA技术交流QQ群:170933152 1.安装.配置JDK1.6 配置JAVA_HOME 右击我的电脑-->属性-->高级系统设置-->高级-->环境变量 在Path中增 ...

  9. java零碎要点013---JAVA执行js_java执行JavaScript_java执行js引擎不能识别document浏览器内置对象解决办法

    执行方法很简单,简单记录一下:  在做项目中有时候需要用到Java调用js文件执行相应的方法 JAVA技术交流QQ群:170933152 在JDK1.6添加了新的ScriptEngine类,允许用户直 ...

最新文章

  1. 《Apache Kafka》学习笔记
  2. Python3学习笔记-面向对象
  3. 隐藏1:N关系和工具
  4. 为转型绞尽脑汁,新东方到美国教中文!网友:卷到国外去了
  5. 点击率预估与冷启动(二)
  6. 监控Linux系统状态的命令
  7. 微信 8.0 来啦,炸裂!
  8. EK算法(网络流,最大流)
  9. linux aria2 使用教程,Aria2安装配置使用教程
  10. 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。剑指Offer(32)
  11. Word未保存文档恢复
  12. Win10与苹果AirDrop(隔空投送)
  13. 大数据分析」最详细的大数据分析师技能图谱详解与零基础自学内容大全
  14. 曹操为何杀死神医华佗?
  15. 线上盲盒电商模式运营
  16. Word排版计算机类科研论文的格式保证
  17. vue3+ts 项目空格和回车代码出现红色波浪线
  18. PX4项目学习::(一)项目架构
  19. 思维导图-功能测试应用
  20. 【无标题】北京车牌汽车只有人去世了才能办理继承手续吗?

热门文章

  1. maven中plugins和pluginmanagement的区别
  2. Python零基础学习笔记(二十)—— tuple元组
  3. 阿里云ECS服务器 Centos7.2 使用 yum 安装 ansible 报错
  4. mysqld或mysqld_safe启动时必须放在第一位的参数(first argument)
  5. pacbio 原始下机数据h5 文件简介
  6. 运维人员的解放----Docker快速部署
  7. 小蚂蚁学习PHP性能优化(2)--PHP语言级性能优化
  8. ios7中使用scrollview来横向滑动图片,自动产生偏移竖向的偏移 问题
  9. 在Debian64环境下源码安装newLisp v10.6.0
  10. AutoFac文档9(转载)