这是原始代码:

public class FruitGrower {

public void growAFruit(String type) {

if ("wtrmln".equals(type)) {

//do watermelon growing stuff

} else if ("ppl".equals(type)) {

//do apple growing stuff

} else if ("pnppl".equals(type)) {

//do pineapple growing stuff

} else if ("rng".equals(type)) {

//do orange growing stuff

} else {

// do other fruit growing stuff

}

}

}

这是我如何改变它:

public class FruitGrower {

enum Fruits {

WATERMELON {

@Override

void growAFruit() {

//do watermelon growing stuff

}

},

APPLE {

@Override

void growAFruit() {

//do apple growing stuff

}

},

PINEAPPLE {

@Override

void growAFruit() {

//do pineapple growing stuff

}

},

ORANGE {

@Override

void growAFruit() {

//do orange growing stuff

}

},

OTHER {

@Override

void growAFruit() {

// do other fruit growing stuff

}

};

static void grow(String type) {

if ("wtrmln".equals(type)) {

WATERMELON.growAFruit();

} else if ("ppl".equals(type)) {

APPLE.growAFruit();

} else if ("pnppl".equals(type)) {

PINEAPPLE.growAFruit();

} else if ("rng".equals(type)) {

ORANGE.growAFruit();

} else {

OTHER.growAFruit();

}

};

abstract void growAFruit();

}

public void growAFruit(String type) {

Fruits.grow(type);

}

}

我看到枚举代码更长,可能还没有像代码那么清楚,但我相信更好的是,有人可以告诉我,为什么我错了(或者也许我不是)?

UPD – 更改的源代码是更具问题的。我会改写这个问题:有没有使用枚举,而不是if-else呢?

Java枚举意义在哪_java – 多个if-else或枚举 – 哪一个更好,为什么?相关推荐

  1. java枚举类是什么_Java学习--常用类(2)、Math类、枚举类

    1.日期时间类 小知识:在我们日常生活所使用的计算机端时间,实际上是对某一个特定时间的计数,即我们现在的时间离特定时间的间隔,这个间隔被称之为时间戳(timestamp),这个特定时间是:1970-0 ...

  2. java反射三种方法_Java基础入门要学哪些 怎么掌握反射和枚举

    Java基础入门要学哪些?怎么掌握反射和枚举?Java是老牌编程语言,是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java所包含的基础知识点很多,只有掌握了这些知识才能更好地运用,下面就来给 ...

  3. java枚举类构造方法默认是,枚举类型的构造方法_Java语言程

    枚举类型的构造方法_Java语言程 6.6.4 枚举类型的构造方法 枚举类型既然是类,那么就可以有构造方法.只不过只能是私有的(private),不能有公有的(public)构造方法,这是为了避免直接 ...

  4. java枚举类型enum用法_java枚举类型enum用法和原理介绍【传智播客】

    Enum枚举类型 Enum的全写是Enumeration,这个词的翻译是列举.逐条陈述.细目.在程序语言中,枚举类型是一种特殊的数据类型(常用的数据类型比如字符串.整型),这种数据类型的变量值限定在固 ...

  5. java中缓冲区和缓存_Java中的Google协议缓冲区

    java中缓冲区和缓存 总览 协议缓冲区是一种用于结构化数据的开源编码机制. 它是由Google开发的,旨在实现语言/平台中立且可扩展. 在本文中,我的目的是介绍Java平台上下文中协议缓冲区的基本用 ...

  6. java interface作用是什么_Java注解总结:史上最全,有这一篇就够了

    什么是注解? 注解的定义 官网描述如下: Java 注解用于为 Java 代码提供元数据.作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的.Java 注解是从 Jav ...

  7. java中 enum什么意思_Java中“enum”的用途是什么?

    本问题已经有最佳答案,请猛点这里访问. 所以我研究了这个"枚举"类型,在我看来它有点像一个美化的数组/ArrayList/List.它的具体用途是什么? 你觉得它是以什么样的方式排 ...

  8. Java自己封装mysql框架_java封装

    jar,war,ear区别及java基础杂七八 jar,war,earqu区别 这三种文件都可以看作是java的压缩格式,其实质是实现了不同的封装: jar--封装类war--封装web站点ear-- ...

  9. java和c++的区别_JAVA和C++区别详解

    JAVA和C++区别详解 来源:-- 作者:-- 浏览:811 时间:2016-08-10 14:18 标签: 摘要: 1)java是解释性语言,java程序在运行时类加载器从类路经中加载相关的类,然 ...

最新文章

  1. OSSIM下部署HIDS
  2. Linux的find grep
  3. 2020 ccf推荐中文期刊_CCF推荐国际学术期刊
  4. 折叠屏究竟是不是智能手机的未来?| 畅言
  5. windows查看器无法打开图片_Win7自带图片查看器异常
  6. HashMap 的数据结构
  7. eclipse idea 导入maven项目
  8. python画二维折线图_python画折线图的程序
  9. 【线性代数】1.6矩阵的特征值和特征向量
  10. 蓝桥杯python小学组_蓝桥杯python组如何准备
  11. 实验三 大数据可视化工具—ECharts
  12. eclipse导入系统签名
  13. 使用python实现往手机发短信(基于twilio)
  14. matlab程序求解工程,面向计算科学与工程的Matlab编程源码
  15. 怎么用计算机计算性别的公式,测男女的计算公式测了下挺准的
  16. 产品经理如何推动项目落地
  17. JDK8——IntStream
  18. 在Word中撰写论文插入MathType公式,使得公式居中编号右对齐教程
  19. vue中使用数组方法push
  20. jfinal 官网不能访问了

热门文章

  1. 视觉三维重建的关键技术及实现
  2. 多视图立体匹配论文分享PVA-MVSNet
  3. matlab读入从文件中读取大量的数据
  4. GROMACS运行参数之md.mdp文件详解
  5. Python 调用matplotlib模块绘制柱状图
  6. mysql 转pxc_PXC 配置笔记-从MySQL直接转成PXC集群
  7. cytoscape绘图互作网络图(二)
  8. R语言|又来一个气泡图
  9. NAR:gcMeta——全球微生物组数据存储和标准化分析平台
  10. diy直立双足机器人_速看!近期国内外机器人资讯大汇总