服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

《effective java》学习笔记(4)


五。c语言结构的替代

如何用java模拟c语言中的一些结构

第19条:用类代替结构

    对于c语言中的结构,java可以用类来代替,不过你不应让类的成员变量可以被公开访问,成员变量应该是private,然后提供一些读写操作来操纵这些变量,想比于c或者c++里的结构类型,这样的类更为安全,体现了oop的封装性。示例代码

public class point{

    private float x;

   private float y;

    public float getx(){ return x;}

    public float gety(){ return y;}

    public void setx(int x){ this.x=x;}

    public void sety(int y){ this.y=y;}

}

第20条:用类层次来代替联合

对于这点,俺不详细说明了,有兴趣的自己看看联合是怎么回事。书中举了著名的shape例子

第21条:用类来代替枚举结构

    java取消了c语言中的枚举类型(注意:jdk5.0已经增加了这一特性,有兴趣的自己查找下资料),这里谈的是如何在5.0以前模拟这一结构。

c语言:typedef enum{ circle,rectangle,square} shape;

java语言:

public class shape{

  private final string name;

   public shape(string name) { this.name=name;}

   public string tostring(){ return name;}

   public static final shape circle=new shape("circle");

   public static final shape rectangle=new shape("rectangle");

   public static final shape square=new shape("square");

}

以后就可以用shape.circle,shape.square来访问其中的变量,可以看到,java的实现模型更为安全,它进行了类型检查。很漂亮的设计!

第22条:使用类和接口来代替函数指针

  java没有独立于类或者接口的函数,任何方法都是包含在某个类和实例里面,所以,在c里面的函数指针就完全可以用类和接口来代替,很明显的例子,如compareable接口,某个需要实现排序的数组,在调用

arrays.sort()时,你可以传入一个实现了compareable接口的比较器。这就相当于一个函数指针。

扫描关注微信公众号