文章详情页
浅谈 Java 中 this 的使用
浏览:20日期:2024-06-20 13:32:14
内容: 1. this是指当前对象自己。 当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用。如下面这个例子中:public class A { String s = 'Hello'; public A(String s) { System.out.println('s = ' + s); System.out.println('1 -> this.s = ' + this.s); this.s = s; System.out.println('2 -> this.s = ' + this.s); } public static void main(String[] args) { new A('HelloWorld!'); }}运行结果:s = HelloWorld!1 -> this.s = Hello2 -> this.s = HelloWorld! 在这个例子中,构造函数A中,参数s与类A的变量s同名,这时如果直接对s进行操作则是对参数s进行操作。若要对类A的变量s进行操作就应该用this进行引用。运行结果的第一行就是直接对参数s进行打印结果;后面两行分别是对对象A的变量s进行操作前后的打印结果。2. 把this作为参数传递 当你要把自己作为参数传递给别的对象时,也可以用this。如:public class A { public A() { new B(this).print(); } public void print() { System.out.println('Hello from A!'); }}public class B { A a; public B(A a) { this.a = a; } public void print() { a.print(); System.out.println('Hello from B!'); }}运行结果:Hello from A!Hello from B! 在这个例子中,对象A的构造函数中,用new B(this)把对象A自己作为参数传递给了对象B的构造函数。3. 注意匿名类和内部类中的中的this。 有时候,我们会用到一些内部类和匿名类。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名。如下面这个例子:public class A { int i = 1; public A() { Thread thread = new Thread() { public void run() { for(;;) { A.this.run(); try { sleep(1000); } catch(InterruptedException ie) { } } } }; thread.start(); } public void run() { System.out.println('i = ' + i); i++; } public static void main(String[] args) throws Exception { new A(); }} 在上面这个例子中, thread 是一个匿名类对象,在它的定义中,它的 run 函数里用到了外部类的 run 函数。这时由于函数同名,直接调用就不行了。这时有两种办法,一种就是把外部的 run 函数换一个名字,但这种办法对于一个开发到中途的应用来说是不可取的。那么就可以用这个例子中的办法用外部类的类名加上 this 引用来说明要调用的是外部类的方法 run。 from:javaidea Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
标签:
Java
相关文章:
1. MyBatis JdbcType 与Oracle、MySql数据类型对应关系说明2. ASP中实现字符部位类似.NET里String对象的PadLeft和PadRight函数3. CentOS邮件服务器搭建系列—— POP / IMAP 服务器的构建( Dovecot )4. Android 7.0 运行时权限弹窗问题的解决5. 存储于xml中需要的HTML转义代码6. jsp网页实现贪吃蛇小游戏7. Android打包上传AAR文件到Maven仓库的示例8. django创建css文件夹的具体方法9. phpstudy apache开启ssi使用详解10. .NET SkiaSharp 生成二维码验证码及指定区域截取方法实现
排行榜
