Java编程:枚举enum中,将方法附加到枚举常量

package 枚举;
//将方法附加到枚举常量
public class UnitsConverter {
    private static double numberToConvert = 0;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        if(args.length == 0)
        {
            System.out.println("Usage:java UnitsConverter<weight in pounds>");
            System.exit(0);
        }
        numberToConvert = Double.parseDouble(args[0]);
        System.out.println("lbs "+args[0]+" equals:\n");
        //遍历Converter枚举的所有元素
        for(Converter conv:Converter.values())
        {
            System.out.printf("%s:%f%n",conv,conv.performConversion(numberToConvert));
        }
    }
}
//枚举Converter:变换器
//Converter中的每个常量都需要实现这个方法。

enum Converter
{
    //把磅换算成千克,需要把指定值乘以常量0.45359237
    KG("KG"){
        double performConversion(double f){
            return f*=0.45359237;
        }
    },
    //把磅换算成克拉
    CARAT("carat"){
        double performConversion(double f){
            return f*=2267.96185;
        }
    },
    //
    GMS("gms"){
        double performConversion(double f){
            return f*=453.59237;
        }
    },
    //
    OUNCE("ounce"){
        double performConversion(double f){
            return f*=16;
        }
    },
    //
    STONE("stone"){
        double performConversion(double f){
            return f*=0.071428571429;
        }
    };

    private final String symbol;
    //构造方法
    Converter(String symbol)
    {
        this.symbol=symbol;
    }
    @Override
    public String toString()
    {
        return symbol;
    }
    //定义的抽象方法performConversion:执行转换
    abstract double performConversion(double f);
}
lbs 5.0 equals:

KG:2.267962
carat:11339.809250
gms:2267.961850
ounce:80.000000
stone:0.357143

时间: 2024-10-06 19:13:08

Java编程:枚举enum中,将方法附加到枚举常量的相关文章

Java编程之反射中的注解详解

"注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解"的相关内容,比如在Spring中是如何进行"注解"组合的.因为注解在Java编程中还是比较重要的,所以我们今天的博客就把注解的东西给系统的介绍一下,当然我们会依托于具体的实例. "注解"说白了就是存储数据的一种方式,如果注解单拎出来功能也就一般,如果将"注

Java编程基础-面向对象(中)

本章承接Java编程基础-面向对象(上)一文. 一.static关键字 在java中,定义了一个static关键字,它用于修饰类的成员,如成员变量.成员方法以及代码块等,被static修饰的成员具备一些特性. 1.static关键字的特点: a)随着类的加载而加载,也就是说,静态会随着类的消失而消失,说明它的生命周期最长. b)优先于对象存在,明确一点,静态是先存在的,对象是后存在的. c)被类的所有对象共享. d)可以通过类名调用. 2.静态变量 在一个java类中,可以使用static关键字

java.lang.reflect.InvocationHandler中invoke()方法调用时机

Java中动态代理的实现,关键就是这两个东西:Proxy.InvocationHandler,下面从InvocationHandler接口中的invoke方法入手,简单说明一下Java如何实现动态代理的. invoke方法的完整形式如下: public Object invoke(Object proxy, Method method, Object[] args) throws Throwable       {              method.invoke(obj, args);  

Java关于Object类中equal方法的理解

话不多说,先上例题 1 package Ch_11; 2 3 public class Test { 4 public static void main(String[] args) { 5 Object circle1 = new Circle(); 6 Object circle2 = new Circle(); 7 System.out.println(circle1.equals(circle2)); 8 } 9 } 10 11 class Circle { 12 double radi

Java复习(三)类中的方法

3.1方法的控制流程 与C/C++类似 3.2异常处理 Java处理错误的方法 抛出(throw)异常 在方法的运行过程中,如果发生了异常,则该方法生成一个代表该异常的代码并把它交给运行时系统,运行时系统便寻找相应的代码来处理这一异常. 捕获(catch)异常 运行时系统在方法的调用栈中查找,从生成异常方法开始进行回溯,直到找到包含相应异常处理的方法为止. 3.2.5声明自己的异常类 public class MyExceptionName extends SuperclassOfMyExcep

Java编程:用两种方法求输入正整数的位数。

import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); //把整数n转换为字符串求其长度 int len = Integer.toString(n).length(); System.out.println("用字符串的方式求其长度len="+len);

Java编程格式输出中 printf 的使用实例

函数运行结果是输出一个表格如下:源代码如下: public class First{ public static void main(String args[]){ System.out.println("Kilograms Pounds | Pounds Kilograms"); int x; int y; for(x=1,y=20;x<=199;x+=2,y+=5){ double p=2.2*x; double k=y/2.2; System.out.printf(&quo

java中的枚举enum

个人感觉,枚举类和普通的java类区别不是很大,接下来简单的回忆一下枚举类 1.创建一个枚举类 Gender public enum Gender { } 和普通的测试类 GenderTest public class GenderTest { } 2.枚举类介绍 ①在枚举类中添加两个变量 public enum Gender { male,female; } 在测试类中直接输出 @Test public void test(){ Gender male = Gender.male; Syste

java中初始化方法

本文主要是讲从<java编程思想>中看到的东西,是第七章复用类的开头内容,主要是类初始化的几种方法的位置,主要包括 1.在定义对象的地方.这意味着他们总是在构造器被调用前被初始化. 2.在类的构造器中 3.在要使用这些对象之前,这种方式称为惰性初始化.在生成对象不值得以及不必每次都生成对象的情况下,这种方式可以减少额外的负担. 4.使用实例初始化. 下面是这四种方式的示例. 1 class Soap{ 2 private String s; 3 Soap() { 4 System.out.pr