类名.this与类名.class

忘是亡心i 2022-06-12 12:00 358阅读 0赞

原文链接:http://leiming32.blog.51cto.com/1021363/494913

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

  1. public class TestClass {
  2. public static void main(String[] args) {
  3. // 在运行期间,如果我们要产生某个类的对象,java虚拟机会检测该类型的Class对象是否已被加载。
  4. // 如果没有加载,java虚拟机会根据类的名称找到.class文件并加载它。
  5. // 当new Point()的时候加载这个类,用forName构造实例的时候也加载该类。 只加载一次
  6. System.out.println("before new Point()");
  7. new Point();
  8. System.out.println("after new Point()");
  9. try {
  10. Class.forName("Line");
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. }
  14. // 利用对象调用getClass()方法获取该对象的Class实例
  15. Point pt = new Point();
  16. Class c1 = pt.getClass();
  17. System.out.println(c1.getName()); // 结果:Point
  18. // 使用Class的静态方法forName(),用类的名字获取一个Class实例
  19. try {
  20. Class c2 = Class.forName("Point");
  21. System.out.println(c2.getName()); // 结果:Point
  22. Point pp = (Point) c2.newInstance(); //一旦某个类型的Class对象已经被加载到内存,就可以用它来产生该类型的所有对象。
  23. //newInstance()调用类中缺省的构造方法。
  24. pp.output();
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. // 运用.class的方式获取Class实例(类)
  29. Class c3 = Point.class;
  30. System.out.println(c3.getName()); // 结果:Point
  31. // 运用.calss的方式获取Class实例(基本类型)
  32. Class c4 = int.class;
  33. System.out.println(c4.getName()); // 结果:int
  34. // 运用.class的方式获取Class实例(基本数据类型的封装类)
  35. Class c5 = Integer.TYPE;
  36. System.out.println(c5.getName()); // 结果:int
  37. Class c6 = Integer.class;
  38. System.out.println(c6.getName()); // 结果:java.lang.Integer
  39. }
  40. }
  41. class Point {
  42. static {
  43. System.out.println("loading point");
  44. }
  45. void output() {
  46. System.out.println("x=" + x + ",y=" + y);
  47. }
  48. int x, y;
  49. }
  50. class Line {
  51. static {
  52. System.out.println("loading Line");
  53. }
  54. }

发表评论

表情:
评论列表 (有 0 条评论,358人围观)

还没有评论,来说两句吧...

相关阅读

    相关 括号

    类对象初始化的时候加括号与不加括号有什么区别~ 网上看了一些博客,说的有点七零八落,最热门的那个帖子说的东西还都是错的。。。 自己之前也没搞懂,实在是汗颜~ in

    相关 [java 基础] .Class

    提供初学者了解 1. java虚拟机一开始的时候是不加载这个类的所以这个类的一些静态变量之类的董事是不存在的,只有当你第一次使用这个类的时候虚拟机才会加载这个类。在虚拟机当

    相关 jQuery选择器(.class

    一 介绍 类名选择器是通过元素拥有的CSS类的名称查找匹配的DOM元素。 在一个页面中,一个元素可以有多个CSS类,一个CSS类又可以匹配多个元素,如果有元素中有一个匹配的