首页 > 其他 > 详细

类型信息(一)

时间:2016-08-14 12:55:58      阅读:183      评论:0      收藏:0      [点我收藏+]

  java是如何在运行时识别对象和类的信息的呢。主要有两种方式

一 传统的RTTI,假定我们编译时已经知道了所有类型

二 反射,允许我们在运行时发现和使用类的信息

abstract class Shape {
  void draw() { System.out.println(this + ".draw()"); }
  abstract public String toString();
}

class Circle extends Shape {
  public String toString() { return "Circle"; }
}

class Square extends Shape {
  public String toString() { return "Square"; }
}

class Triangle extends Shape {
  public String toString() { return "Triangle"; }
}    

public class Shapes {
  public static void main(String[] args) {
    List<Shape> shapeList = Arrays.asList(
      new Circle(), new Square(), new Triangle()
    );
    for(Shape shape : shapeList)
      shape.draw();
  }

把对象放入shapeList 时,会向上转型;取出元素时,实际上所有事物都当做object持有,会自动将结果转换为shape.
这是RTTI最基本的使用形式,因为在java中,所有类型转换都是在运行时进行正确检查的。在运行时识别一个对象的类型。

14.2 clsss 对象

每个类都有一个Class 对象,在类加载的时候生成(使用类而作的准备工作(1 加载 2 链接 3初始化)),三种方式获得Class对象

1 Class.forName();会初始化

2 A a = new A(); a.getclass();

3 a.class

类型信息(一)

原文:http://www.cnblogs.com/zhouyanan/p/5769875.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!