`
xinglongbing
  • 浏览: 152494 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Java编程中注意的问题

阅读更多

让final融入你的程序习惯。

final常量:

final变量:

final参数:

final集合:Collections.unmodifiableSet(temp);

final实例变量:

final类:

final方法:

使用final完成条件编译:

 

 

Immutable对象应注意的问题:

是private 实例变量不代表别人不可改变它的:

1. private Mutable变量:得到Mutable变量引用便可改变其中的内容。

2.使使用用反射可以突破引用变量或方法的访问限制:Class java.lang.reflect.AccessibleObject。

因此真正的不可变对象应注意:

对传入的对象进行拷贝:setPoint(Point p){this.point = new Point(p)};

对返回的对象进行拷贝:getPoint(){return new Point(this.point);}

注意利用反射突破访问限制直接修改属性:使用final来避免。private final 。。。这样只要值定下来就真正不可改变了。

由于不可变对象的固有特性:对于大对象应慎重考虑是否应该不可变的:每次返回都需要进行大对象的拷贝,十分影响性能。String--》StringBuffer就是一个例子(改变对象时应该慎重考虑使用"+"运算符)。

以下是不可变集合的一种实现方法:JDK源码中有

 
public static Collection unmodifiableCollection(Collection c) {

  return new UnmodifiableCollection(c);

}

static class UnmodifiableCollection implements Collection, Serializable {

  // use serialVersionUID from JDK 1.2.2 for interoperability

  private static final long serialVersionUID = 1820017752578914078L;

  Collection c;

  UnmodifiableCollection(Collection c) {

    if (c==null)

      throw new NullPointerException( );

    this.c = c;

  }

  public int size( )                     {return c.size( );}

  public boolean isEmpty( )             {return c.isEmpty( );}

  public boolean contains(Object o)   {return c.contains(o);}

  public Object[] toArray( )             {return c.toArray( );}

  public Object[] toArray(Object[] a) {return c.toArray(a);}

  public String toString( )            {return c.toString( );}


  public Iterator iterator( ) {

    return new Iterator( ) {

      Iterator i = c.iterator( );


      public boolean hasNext( ) {return i.hasNext( );}

      public Object next( )          {return i.next( );}

      public void remove( ) {

        throw new UnsupportedOperationException( );

      }

    };

  }


  public boolean add(Object o){

    throw new UnsupportedOperationException( );

  }


  public boolean remove(Object o) {

    throw new UnsupportedOperationException( );

  }


  public boolean containsAll(Collection coll) {

    return c.containsAll(coll);

  }


  public boolean addAll(Collection coll) {

    throw new UnsupportedOperationException( );

  }


  public boolean removeAll(Collection coll) {

    throw new UnsupportedOperationException( );

  }


  public boolean retainAll(Collection coll) {

    throw new UnsupportedOperationException( );

  }


  public void clear( ) {

    throw new UnsupportedOperationException( );

  }

}

public static Set unmodifiableSet(Set s) {

  return new UnmodifiableSet(s);

}

分享到:
评论

相关推荐

    Java编程中须注意的细节.pdf

    在进行Java编程时,许多开发者往往会忽略一些琐碎但至关重要的细节,这些细节可能在项目的开发和维护中造成不可预见的问题。为了解决这些问题,可以参考《Java Pazzlers》(Java解惑)这本书,其中对许多常见的编程...

    Java编程中的中文问题以及解决方法

    ### Java编程中的中文问题及其解决方法 #### 一、中文问题的来源 计算机技术发展初期,操作系统主要支持单字节编码格式,这主要是为了适应英文等拉丁字母的处理需求。然而,随着全球化的推进和技术的进步,为了更...

    java-编写跨平台Java程序注意事项

    在Java编程领域中,跨平台性是其核心优势之一,这得益于Java“一次编写,到处运行”的设计理念。然而,在实际开发过程中,要实现真正的跨平台应用并非易事,需要注意诸多细节。下面将详细介绍在开发跨平台Java程序时...

    编写跨平台Java程序注意事项

    Java 编写跨平台应用程序时,需要注意多个方面以确保程序能够在不同的操作系统上正确运行。首先,选择使用标准的 Java Development Kit (JDK) 版本,例如 1.0、1.1、1.2 或更高版本,并且依赖于 Java 核心 API,避免...

    Java程序调用MATLAB接口

    Java程序调用MATLAB接口 Java 程序调用 MATLAB 接口是 Java 和 MATLAB ...Java 程序调用 MATLAB 接口需要注意版本问题、环境安装和 MATLAB 生成 JAR 包的步骤。只有按正确的步骤进行操作,才能成功调用 MATLAB 接口。

    Java开发注意事项

    不过,基于标题“Java开发注意事项”及描述“Java开发注意事项,编程人员可以看看哦”,我们可以围绕Java编程的一些核心知识点和最佳实践进行详尽阐述。 ### Java开发注意事项 #### 一、命名规范 Java中的命名...

    java编程心得 注意的地方

    此外,异常处理是Java编程中不容忽视的部分,try-catch-finally语句块用于捕获和处理运行时可能出现的问题,保证程序的健壮性。 对于复杂问题,可以采用分治法或设计模式来解决。设计模式是一种解决常见问题的最佳...

    最全的资源-Java编程的逻辑

    Java编程的逻辑是软件开发领域中的核心概念,它关乎如何用Java语言来构造高效、可维护的程序。在这个最全的资源中,我们能够深入理解Java编程的基本原理和高级技巧,帮助开发者提升技能水平。 首先,Java编程的基础...

    Java程序设计基础:使用命令行方式开发Java程序.pptx

    使用命令行方式开发Java...可执行文件javac.exe位于Java安装目录的bin子目录中,称为Java编译器 (Java Compiler——javac名称的由来),用于对指定的Java源代码进行编译。 打开一个DOS窗口,进入Welcome.java文件所在

    华为JAVA编程规范、编程军规

    以下是基于标题“华为JAVA编程规范、编程军规”以及描述中提及的文档,提炼出的一些核心知识点: 1. **命名规范**:Java编程中的命名规则非常重要,华为编程规范强调了类名、方法名、变量名应清晰易懂,遵循驼峰...

    Java编程乱码问题

    总之,Java编程中的乱码问题主要是由于Unicode编码与系统默认编码的转换不当导致的,理解和掌握编码原理以及Java程序的生命周期中的编码转换过程,是解决这类问题的关键。开发者应当注意在各个阶段保持编码的一致性...

    Java程序基础学习注意事项总结

    在学习过程中,注意以下几个关键点,能够帮助你更好地掌握Java语言。 首先,安装Java Development Kit (JDK)是开始Java编程的第一步。确保正确安装后,配置环境变量是至关重要的。在Windows系统中,你需要设置`JAVA...

    基于计算机软件开发的JAVA编程应用初探.pdf

    在计算机软件开发中,Java编程语言的应用是极为广泛与深远的。Java语言自问世以来就以其独特的特性和优势吸引了大量开发者的注意,这些特性包括但不限于其平台独立性、内存管理优化、面向对象的编程设计以及其强大的...

    Java程序设计语言-第4版.pdf

    作为目前IT行业中使用非常普遍的编程语言之一,Java被应用在多种开发领域,包括企业级应用、移动应用、大数据处理和云计算平台等。本段内容中提到的“Java学习群”提供了一个学习交流的社区,对于初学者或希望进一步...

    Java编程超市购物程序设计

    以上就是构建“Java编程超市购物程序设计”所需的关键知识点。在实际开发过程中,需要根据具体需求进行详细设计和编码,同时注意代码的可读性和可维护性,以实现一个高效、稳定的超市购物系统。

    JAVA程序编辑器[java程序编写器]

    Java编程是信息技术领域中最基础且广泛使用的编程语言之一,尤其对于初学者来说,拥有一个适合的编辑器至关重要。"JAVA程序编辑器[java程序编写器]"是一个专为Java初学者设计的工具,它简化了代码编写、编译和调试的...

    java并发编程书籍

    Java并发编程是软件开发中的一个关键领域,尤其是在大型企业级应用和分布式系统中。通过学习相关的书籍,开发者可以深入理解如何有效地设计和实现高效的多线程应用程序,避免并发问题,如竞态条件、死锁、活锁等。...

    java编程规范编程原则

    本文将详细介绍Java编程过程中应该遵循的一些核心原则与规范,包括但不限于命名约定、MVC模式以及其他重要的编程指南。 #### 二、命名约定 在Java编程中,合理的命名可以极大地提高代码的可读性和可维护性。下面...

Global site tag (gtag.js) - Google Analytics