设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

一些关于Java的句子

2014-12-23 15:40| 发布者: joejoe0332| 查看: 1423| 评论: 0|原作者: a598799539 |来自: Linux中国

摘要: Java中有四种不同的访问类型:这四种类型包括:private, package private (包访问权限,无修饰符,又叫default, 译者注)。如果你在类中定义一个元素时并不加任何访问类型修饰符,它将被默认设置为包访问权限(package ...

Private是类的访问级别而不是对象

如果你可以访问一个变量或方法,那么不管它属于哪个对象你都可以访问它。如果this.a可以访问到,那another.a也可以访问到,只要它们是同一个类的实例。同一个类的实例对象可以随意调用其他实例的变量或方法。不过这样的代码一般都没有意义。现实生活中异常是equals()(由Eclipse生成, 15 - 18行):

  1. package a;
  2.  
  3. public class PrivateIsClass {
  4. private Object object;
  5.  
  6. @Override
  7. public boolean equals(Object obj) {
  8. if (this == obj)
  9. return true;
  10. if (obj == null)
  11. return false;
  12. if (getClass() != obj.getClass())
  13. return false;
  14. PrivateIsClass other = (PrivateIsClass) obj;
  15. if (object == null) {
  16. if (other.object != null)
  17. return false;
  18. } else if (!object.equals(other.object))
  19. return false;
  20. return true;
  21. }
  22. }

静态(static)类可能有很多实例

Protection is not object level. It is class level.

访问类型不是对象级别的而是类级别的。

那些不支持有任何实例的类,通常被称为实用工具类。它们只包含静态字段和静态方法以及唯一的不被该类的任何静态方法调用的私有构造函数。在Java 8中也可以有这样的一个野兽(这个词翻译不通,译者注)在接口中实现,因为Java 8的接口可以有静态方法。我不觉得我们应该使用这个特性而不是实用工具类。我也不完全确信我们应该使用实用工具类。

静态类总是在另一个类或接口中。它们是嵌套类。他们是静态的,就像静态方法不能访问类的实例方法和字段一样,静态内部类也不能访问嵌入类的实例方法和字段。这是因为内部类没有嵌入类实例的引用(或者说是指针,如果你喜欢这么叫的话)。内部类(内部类,也即非静态嵌套类, 译者注),而非静态嵌套类, 没有嵌入类的一个实例,它是无法被创建的。每个内部类的实例都具有嵌入类实例的一个引用,因此一个内部类可以访问嵌入类的实例方法和字段。

因为这个原因,要是没有外部类的一个实例,你就不能创建一个内部类。当然,如果是当前对象,也就是this的话,你就可以不需要指定它。在这种情况下你可以使用new, 在这种情况下,也就是this.new的简式。在一个静态的环境中,例如从一个静态方法,你必须指定内部类应该创建哪个封闭类的实例。见第10行:

  1. package a;
  2.  
  3. class Nesting {
  4. static class Nested {}
  5. class Inner {}
  6. void method(){
  7. Inner inner = new Inner();
  8. }
  9. static void staticMethod(){
  10. Inner inner = new Nesting().new Inner();
  11. }
  12. }

匿名类只能访问final变量

Variable has to be effective final

变量必须是有效的final

当一个匿名类被定义在一个方法中,它可以访问局部变量如果该变量是final的。但这说的有点模糊。它们不得不声明成final,他们还必须是有效final。这也是Java 8中发布的一些特性。你不需要声明这些变量为final型,但它们仍然必须是有效的final。

Java 8 does not require final, only effective final

Java 8并不要求final,只要求有效final。

为什么你需要对一些东西声明final,当它被检查必须是这样的。就像方法的参数。它们也必须是final的。你说这不是Java所必须的吗?嗯,你是对的。这只是一个良好的编程风格所必须的。


via: http://www.javacodegeeks.com/2014/11/some-sentences-about-java.html

作者:Peter Verhas 译者:a598799539 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部