类名.this与类名.class
转自:
1.当在内部类中使用this指的就是内部类的对象, 为了访问外层类对象,就可以使用外层类名.this来访问。
2. 在java中,每个class都有一个相应的Class对象,当编写好一个类,编译完成后,在生成的.class文件中,就产生一个Class对象,用来表示这个类的类型信息。获得Class实例的三种方式:
1). 利用对象调用getClass()方法获取该对象的Class实例
2). 使用Class的静态方法forName(),用类的名字获取一个Class实例
3). 运用.calss的方式获取Class实例,对基本数据类型的封装类,还可以采用.TYPE来获取对应的基本数据类型的Class实例。
以下是TestClass.java代码:
public class TestClass { public static void main(String[] args) { // 在运行期间,如果我们要产生某个类的对象,java虚拟机会检测该类型的Class对象是否已被加载 // 如果没有加载,java虚拟机会根据类的名称找到.class文件并加载它。 // 当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(); } // 利用对象调用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 // 一旦某个类型的Class对象已经被加载到内存,就可以用它来产生该类型的所有对象。Point pp = (Point) c2.newInstance(); // newInstance()调用类中缺省的构造方法pp.output(); } catch (Exception e) { e.printStackTrace(); } // 运用.class的方式获取Class实例(类) Class c3 = Point.class; System.out.println(c3.getName()); // 结果:Point // 运用.calss的方式获取Class实例(基本类型) Class c4 = int.class; System.out.println(c4.getName()); // 结果:int // 运用.class的方式获取Class实例(基本数据类型的封装类) Class c5 = Integer.TYPE; System.out.println(c5.getName()); // 结果:int Class c6 = Integer.class; System.out.println(c6.getName()); // 结果:java.lang.Integer }
} class Point { static { System.out.println("loading point"); } void output() { System.out.println("x=" + x + ",y=" + y); } int x, y;
} class Line { static { System.out.println("loading Line"); }
}
类名.this与类名.class相关推荐
- objective-c @class 类名和#improt 类名.h的区别
在Objective-c中,当一个类需要引用另一个类,即建立复合关系的时候,需要在类的头文件中建立被引用类的指针. 如:Car.h#import @interface Car:NSObject {Ti ...
- java classname.this_java 中 类名.this与类名.class
1.this指的是当前正在访问这段代码的对象,当在内部类中使用this指的就是内部类的对象, 为了访问外层类对象,就可以使用外层类名.this来访问. 一般也只在这种情况下使用这种 示例代码,请注意第 ...
- Java12-day03【(类名、抽象类名、接口名)作为形参和返回值、内部类、常用API(Math、System、toString()、Arrays)、冒泡】
视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] Java基础--学习笔记(零起点打开java ...
- java类名变量_java类名操作变量方法
JAVA中包括成员变量的定义和方法的定义,而成员变量的定义又包括类变量和实例变量的定义:其中用static 修饰的是类变量,而其他是实例变量. 实例变量和类变量的区别:一个类通过使用new 运算符可以 ...
- js获取dom元素上所有的类名,添加类名,移除类名,切换类名(原生 js、 jquery)
<div class='m-slidebar'>内容</div> 1.原生方法: 1-1: 获取元素的类名 : el.classList 可以添加多个类名 中间空格隔开 var ...
- js在不删除原有类名追加新类名方法
添加类名 element.classList.add(class1, class2, ...); 删除类名 element.classList.remove(class1, class2, ...); ...
- jq添加类名、删除类名
添加类名 $('.list').addClass('class3');//给所有类名为list的标签添加class$('.list')[0].classList.add("class4&qu ...
- 根据class名 赋值_匿名内部类 类名规则
今天发现友盟错误反馈一条信息如下: 从信息中可以确定是TencentUtil类中某个匿名内部类出了问题,但是因为此类中匿名内部类过多,具体定位是哪一个倒是有点不确定了,所以抽时间研究了下匿名内部类相关 ...
- vite打包编译后类名混淆冲突问题处理
vite打包编译后类名混淆冲突问题处理 背景 在项目开发过程中,发现同个views引用的不同stora打包编译后的类名偶发性存在一致的情况,都为n,导致类名冲突 解决方案 类名不进行打包混淆处理,防止 ...
最新文章
- php原码初级自定义数据库操作方法
- SQL2005的安装
- reduction_indices的用法
- distable:table-cell
- hbase建表,删表,修改,查询(get,scan,布隆过滤器)
- C# 判断给定大数是否为质数,目标以快速度得到正确的计算结果。
- yii2笔记: 单元测试
- mysql写下拉树_PHP+mysql实现从数据库获取下拉树功能的方法
- 2015年3月31号日志
- Java并发 乐观锁和悲观锁 乐观锁的一种实现方式CAS
- 一波黑科技即将袭来!StarVR带你感受他们的未来
- 软件工程——五大模型
- JavaScript 获取当前 URL 的文件名(不包含扩展名)
- 虚短”“虚断”两板斧,搞定运算放大器 11张大图详(转)感觉特别有用 转过来收藏...
- svn安装打开不弹出登录认证页面
- adobe软件卸载不了怎么办?那就使用dobe官方清理工具吧!
- CSDN上Android与IPhone开发博客精选
- 企业邮箱帐号无法发信
- POI批量导出Excel ZIP打包下载
- 解决Jenkins中Maven本地仓库更新不及时的问题
热门文章
- 解决uni-app微信小程序底部input输入框,键盘弹起时页面整体上移问题
- 微信小程序扫二维码带参数问题
- Flex 布局 flex-grow 占用空间
- 分布式消息中间件 MetaQ 作者庄晓丹专访
- Error evaluating expression ‘’. Return value () was not iterable.
- meethigher-定时刷步数收取蚂蚁森林能量
- liquibase学习和使用
- Flask - bootstrap模板使用 和 模板继承
- ResNet详解(pytorch)
- java perm 查看_JVM 分析工具和查看命令,超详细