`

JAVA封装类和Class类[转]

    博客分类:
  • java
阅读更多

转:http://www.cnblogs.com/mayuechang/articles/1432241.html

 

有时候我们调用方法的时候,它的参数是引用类型,但是我们的数据是基本类型,这个时候我们就要用到下面的封装类
下面的8中基本类型所对应的引用类
基本数据类型           封装类
         boolean                Boolean
     byte                   Byte
     short                  Short
     int                    Integer
     long                   Long
     char                   Character
     float                  Float
     double                 Double

class Test
{
           public static void main(String[] args)
           {
                   int i=3;
                   Integer in=new Integer(i);           //(构造的时候传递一个基本类型)基本类型转化为引用类型
                   int j=in.intValue();                 //引用转化为基本类型
                   /*同样其他的基本类型也可以象上面这样转化*/

                   //下面是String和Integer对象之间的转化
                   Integer in1=new Integer(i);
                   String str=in1.toString();
                   Integer in2=Integer.valueOf(str);    

                   //比较特殊的是Boolen类型,它么没有转化为String类型。       
           }
}
注意:
所有的封装类都是只读的,当我们建立一个和基本类型相对应的封装类的对象的时候,那么它的内容是不能修改。
每个基本类型只能建立一个只读的封装类对象。

在java中,每个class都有一个相应的Class对象,当编写好一个类,编译完成后,在生成的.class文件中,就产生一个class对象,用来表示这个类的类型信息。获得Class实例的三中方式:
1.利用对象调用getClass()方法获取该对象的Class实例
2.使用Class的静态方法forName(),用类的名字获取一个Class实例
3.运用.calss的方式获取Class实例,对基本数据类型的封装类,还可以采用.TYPE来获取对应的基本数据类型的Class实例

calss ClassTest
{
           public static void main(String[] args)
           {
                   /*
                   //利用对象调用getClass()方法获取该对象的Class实例
                   Point pt=new Point();                
                   Class c1=pt.getClass();
                   System.out.println(c1.getName());                   //结果:Point
                
                   //使用Class的静态方法forName(),用类的名字获取一个Class实例
                   try
                   {
                           Class c2=Class.forName("Point");
                           System.out.println(c2.getName());           //结果:Point
                   }
                   catch(Exception e)
                   {
                           e.printStackTrace();
                   }

                   //运用.calss的方式获取Class实例(类)
                   Class c3=Point.calss;
                   System.out.println(c3.getName());                   //结果:Point

                   //运用.calss的方式获取Class实例(基本类型)
                   Class c4=int.calss;
                   System.out.println(c4.getName());                   //结果:int

                   //运用.calss的方式获取Class实例(基本数据类型的封装类)
                   Class c5=Integer.TYPE;
                   System.out.println(c5.getName());                   //结果:int
                
                   Class c6=Integer.class;
                   System.out.println(c6.getName());                   //结果:java.lang.Integer
                   */
                
                   //以下结果是:     before new Point()
                                   loading point
                                   after new Point()
                                   loading Line        
                   //当new Point()的时候加载这个类,用forName构造实例的时候也加载该类。
                   System.out.println("before new Point()");
                   new Point();
                   System.out.println("after new Point()");

                   try
                   {
                           Class.forName("Line");
                   }catch(Exception e)
                   {
                           e.printStackTrace();
                   }
                
           }
}
class Point()
{
           static
           {
                   System.out.println("loading point");
           }
           int x,y;
}
class Line
{
           static
           {
                   System.out.println("loading Line");
           }
}

在运行期间,如果我们要产生某个类的对象,java虚拟机会检测该类型的Class对象是否已被加载。如果没有加载,java虚拟机会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已经被加载到内存,就可以用它来产生该类型的所有对象。
newInstance()调用内中缺省的构造方法

newInstance()调用类中缺省的构造方法,如果要实例的对象中有了自己定义的构造方法(除重写的和默认构造方法相同的构造方法外)
创建此 Class 对象所表示的类的一个新实例
class ClassTest
{
          public static void main(String[] args)
          {
                  if(args.length!=1)
                  {
                          System.out.println("args.length!=1");
                          return;
                  }
                  try
                  {
                          Class c=Class.forName(args[0]);
                          Point pt=(Point)c.newInstance();
                          pt.output();
                  }catch(Exception e)
                  {
                          e.printStackTrace();
                  }
          }
}
class Point
{
          int x;
          int y;
          static
          {
                  System.out.println("Loading point");
          }
          void output()
          {
                  System.out.println("x="+x+",y="+y);
          }
}
当我们在命令提示符下面编译好该类之后,输入java ClassTest Point的时候,此时会输出Loading point和x=0,y=0

分享到:
评论

相关推荐

    java元数据——CLass类

    3. 对于基本数据类型的封装类还可以通过 .TYPE 的方式获取其Class 对象。注意 .TYPE 实际上获取的封装类对应的基本类型的Class 对象的引用。 Class clazz = Integer.TYPE; int.class==Integer.TYPE 返回true int....

    java数据库封装类

    在Java编程中,数据库封装类是一种常见的设计模式,它的主要目的是为了提高代码的可复用性和可维护性。通过对数据库操作进行封装,开发者可以将与数据库交互的逻辑集中管理,减少代码的耦合度,使得业务逻辑代码更加...

    Java常用工具类UtilClass

    在Java编程中,工具类(Util Class)是包含各种实用函数的静态类,它们提供了一种简化常见任务的方法。在给定的`UtilClass`中,我们有五个主要的工具类:`StringUtil`、`FileUtil`、`ConnectDB`、`DateUtil`和`...

    JAVA反射机制-Class类-Class对象的获取.pdf

    这种能力是通过`java.lang.Class`类实现的,它提供了封装类或接口信息的能力。本文将详细介绍如何获取`Class`对象的不同方法及其应用场景。 #### Class类简介 `java.lang.Class`是一个特殊的类,它用来封装已经被...

    Java中的CLASS类Java中的CLASS类

    System.out.println(c2.getName()); Class c3 = Point.class; System.out.println(c3.getName());...了解并熟练掌握Class类及其相关方法,对于理解和使用Java的高级特性,如动态代理、反射API等至关重要。

    Java封装类-将秒格式化为天/时/分/秒

    这里的"Java封装类-将秒格式化为天/时/分/秒"是一个很好的实践例子,展示了如何通过创建自定义类来处理时间单位的转换。下面将详细阐述这个知识点及其相关原理。 首先,我们要理解时间单位的换算关系:1天=24小时,...

    java.lang.Class类

    Java.lang.Class类是Java语言中一个非常重要的类,它封装了对象和接口的运行时状态。当Java程序在运行时,Java虚拟机(JVM)会对所有对象进行类型标识,这项信息记录了每个对象所属的类。Class类是Java类库中的核心...

    java增删改查JDBC封装类(泛型封装)

    "java增删改查JDBC封装类(泛型封装)"这个主题是关于如何利用泛型来优化JDBC操作,以提高代码的可读性、安全性和复用性。以下将详细讲解这个主题涉及的知识点。 1. **JDBC基础**: - JDBC是Java中连接数据库的标准...

    java 类和对象封装性

    总结起来,Java 中的类和对象封装性是通过类来描述一组具有相同特性和行为的对象,并通过访问控制和方法封装来保护对象的内部状态,提供对外的接口。理解并掌握这一概念对于深入学习Java编程至关重要。

    基于java8新特性+反射机制实现list不同实体类互转.zip

    这个压缩包文件“基于java8新特性+反射机制实现list不同实体类互转.zip”提供了一种解决方案,它利用了Java 8的新特性和反射机制来实现这种转换,并将这个功能封装为一个工具类。 首先,Java 8引入了许多新特性,...

    java-嵌套类(inner class)-来自oracle官网

    这个包含嵌套类的外部类被称为封装类(Enclosing Class),有时也称为外部类(Outer Class)。嵌套类可以是封装类的直接成员,也可以是封装类的方法成员中的成员。作为外部类的成员,嵌套类可以具有访问修饰符`...

    ASM操作字节码,动态生成Java类class文件

    面向切面编程(AOP)是一种编程范式,它允许程序员定义“切面”,这些切面封装了跨越多个对象和类的行为或关注点,如日志、事务管理等。在Spring框架中,AOP通过代理模式实现,可以是JDK动态代理或者CGLIB代理。当...

    java各种常用的工具类封装 源码

    `java.lang.reflect` 包提供了`Class`、`Field`、`Method` 等类,`ClassUtil` 或类似的工具类可以封装这些反射操作,如创建对象、调用私有方法、修改私有属性等。 5. **Json**: JSON (JavaScript Object Notation) ...

    Java中inner_class内部类

    Java中的内部类(Inner Class)是Java语言特性中一个独特且强大的工具,它允许在一个类的内部定义另一个类。这种设计模式提供了许多便利,包括封装、代码复用、以及对匿名类的支持。本文将深入探讨Java内部类的概念...

    Java封装自联表一对多

    总结来说,"Java封装自联表一对多"是Java开发中处理数据库关系的一种方式,通过面向对象的封装原则,将数据库的一对多关系映射为Java对象,结合ORM框架,实现对象与数据库之间的透明交互。理解和熟练掌握这一概念...

    JAVA的JAR或Class生成Delphi的Native Bridge File工具

    Java的JAR文件是Java字节码的集合,包含了编译后的类和接口,而Class文件则是个体的Java类文件。在Delphi中直接使用这些资源需要一个适配层,这就是Native Bridge File的作用。它是一种中间层,将Java的方法映射为...

    复数类java代码

    在Java中,我们可以创建一个复数类来封装这两个部分,并提供与复数相关的操作,如加法、减法、乘法和除法。 在"复数类java代码"这个主题中,我们主要会涉及以下几个知识点: 1. **类的定义**:首先,我们需要定义...

    用java封装的sox工具

    Java封装的sox工具是一种巧妙的方法,它使得在Java应用程序中可以方便地调用和操作音频处理工具Sox。Sox(Sound eXchange)是一个强大的命令行工具,支持多种音频格式的转换、混音、剪辑等操作。通过Java进行封装,...

    批量转换json到java类工具

    将json转换为javebean的工具,封装jsonschema2pojo,用户可以修改配置文件json2Beans.json,然后运行Json2JavaBean2.bat直接生成对应类。 能够批量转换json为bean,直接拷贝到项目中使用。 提醒: 需要提前安装java...

    将Map转换成Java实体

    在Java编程中,Map对象和Java实体类是两种常见的数据结构。Map对象通常用于存储键值对,而实体类则代表数据库中的记录或者业务逻辑中的对象。在实际开发中,我们有时需要将Map对象的数据转换为Java实体对象,以便...

Global site tag (gtag.js) - Google Analytics