第十三节 Java 枚举与注解

Java之枚举与注解 枚举与注解 阅读详情

1. 枚举

1. 1 枚举特征

枚举是Java 1.5出来之后新增的类型,它可以用来定义一组取值范围固定的变量。
在枚举没有出来之前,要定义这样的变量,往往通过定义一个接口,将不同的变量使用不同的整数赋值,但是这样存在明显缺点:
1)不能保证其定义数值的合法性;
2)无法根据数值大小获取其含义

枚举有如下特征:
1)Enum类是枚举的一个封装类,是所有类型的超类,它是一个没有抽象方法的抽象类
2)通过关键字enum,可以定义枚举类型
3)Enum类中定义了很多常用的方法
如元素之间的比较,获取元素名称,获取元素定义的次序等
a. compareTo(E o):比较枚举元素的顺序
b. eauqls(Object o):判断枚举元素是否相同
c. name():获取元素定义时的名称
d. ordinal():获取枚举元素被定义时的顺序,从0开始计算
注意:对于枚举可以使用“==”来比较两个枚举元素相同与否,由于它们已经重写了equals()和hashCode()两个方法

2. 使用枚举

2.1 定义枚举类

1)语法结构

修饰符 enum 枚举类名称{
枚举值1,枚举值2,枚举值3.....}

2)定义一个数据库产品的枚举类

public enum DBType {
    MySQL,ORACLE,DB2;
}

public class DBTypec {
    public final static DBTypec MYSQL=new DBTypec();
    public static final DBTypec DB2=new DBTypec();
    public final static DBTypec ORACLE=new DBTypec();

    @Override
    public String toString() {
        return "**************";
    }
}

3)使用

public class EnumTest {
    public static void main(String[] args) {
        System.out.println(DBType.DB2.toString());
        System.out.println(DBType.MySQL);
        System.out.println(DBType.ORACLE);
        System.out.println("------使用类去定义-----");
        System.out.println(DBTypec.DB2);
        System.out.println(DBTypec.MYSQL);
        System.out.println(DBTypec.ORACLE);
    }
}

3)注意事项
a. 每一个枚举值都是该枚举类的一个对象;
b. 枚举类的构造方法都是私有的;
c. 在枚举类中,所有的枚举对象以大写的形式存在,枚举对象之间以逗号隔开;
d. 枚举对象要定义在枚举类的第一行;
e.里面的量都是静态常量,会随着类的加载先加载,因此它的私有构造方法也会进行构造;
f. 默认的成员变量都是私有的;
4)案例1

  1. 定义一个描述星期一到星期天的枚举类
  2. 定义一个方法,传入枚举对象,判断是星期几
    定义枚举类:
public enum Week {
    MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY;
}

使用:

public class WeekTest {
    public static void main(String[] args) {
        getWeekInfo(Week.FRIDAY);
    }
    public static void getWeekInfo(Week week){
        switch (week){
            case MONDAY:
                System.out.println("今天是星期一");
                break;
            case TUESDAY:
                System.out.println("今天是星期二");
                break;
            case WEDNESDAY:
                System.out.println("今天是星期三");
                break;
            case THURSDAY:
                System.out.println("今天是星期四");
                break;
            case FRIDAY:
                System.out.println("今天是星期五");
                break;
            case SATURDAY:
                System.out.println("今天是星期六");
                break;
            case SUNDAY:
                System.out.println("今天是星期日");
                break;
        }
    }
}

5)案例2

public enum Color {
    RED("红"),GREEN("绿"),BLUE("蓝");
    private String name;
    //增加一个带参数的构造方法
    Color(String name){
        this.name=name;
    }
    @Override
    public String toString() {
        return name;
    }
}

public class ColorTest {
    public static void main(String[] args) {
        displayColor(Color.GREEN);
    }
    public static void displayColor(Color color){
        switch (color){
            case RED:
                System.out.println(color);
                break;
            case GREEN:
                System.out.println(color);
                break;
            case BLUE:
                System.out.println(color);
                break;
        }
    }
}

3. 注解

3.1 注解的介绍

定义:注解(Annotation),也叫元数据,一种代码级别的说明,他是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次,它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行 说明,注释。

注解按照作用可以分为三类:

  1. 编写文档:通过代码里标识的元数据生成文档【生成doc文档】
  2. 编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】
  3. 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】重点

3.2 JDK 内置注解

1)@Override:用于修饰此方法重写了父类的方法
2)@Deprecated:用于修饰已经过时的方法
3)@SuppressWarnings:用于通知java编译器禁止特定的编译警告
3.1)@SuppressWarings(“unused”)

3.3 定义注解

注解通过@interface关键字进行定义。

public @interface 注解名称{....}

使用注解,以在类上使用注解为例:

@注解名称
public class Test{....}

3.4 元注解

元注解是可以通过注解到注解上的注解,或者说元注解是一种基本注解,但是它能够应用到其他的注解上面。
元注解有:@Retention、@Documented、@Target、@Inherited、@Repeatable 5种。
1)@Retention
Retention 的英文意思为保留期的意思。当@Retention应用到一个注解上的时候,它解释说明了这个注解的存活时间。
它的取值如下:

值描述
RetentionPolicy.SOURCE注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视
RetentionPolicy.CLASS注解只被保留到编译进行的时候,它并不会被加载到JVM中
RetentionPolicy.RUNTIME注解可以保留到程序运行的时候,它会被加载进入到JVM中,所以在程序运行时可以获取它们

注意:RetentionPolicy是一个枚举类

示例代码:

@Retention(RetentionPolicy.RUNTIME)//定义该注解在运行期有效
public @interface MyAnnotation{...}

2)@Target
Target是目标的意思,@Target 指定了注解运用的地方
2.1)ElementType.ANNOTATION_TYPE:可以给一个注解进行注解
2.2)ElementType.CONSTRUCTOR:可以给构造方法进行注解
2.3)ElementType.FIELD:可以给属性进行注解
2.4)ElementType.LOCAL_VARIABLE:可以给局部变量进行注解
2.5)ElementType.METHOD:可以给方法进行注解
2.6)ElementType.PACKAGE:可以给一个包进行注解
2.7)ElementType.PARAMETER:可以给一个方法内的参数进行注解
2.8)ElementType.TYPE:可以给一个类型进行注解,比如类,接口,枚举

代码示例:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)//这表示这个注解只能用在一个类型上,比如类,接口,枚举等
public @interface MyAnnotation{....}

3)Inherited
父类使用的注解如果声明了@Inherited,,则这个类可以继承注解

@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotion{...}

@MyAnnotation
public class A{...}
public class B extends A{...}//这个类可以继承A的注解

注意:注解MyAnnotation被@Inherited修饰后,之后类A被MyAnnotation注解,A的子类B也拥有MyAnnotation这个注解
4)@Documented
这个元注解是和文档有关,它的作用能够将注解中的元素包含到Javadoc中去。
5)@Repeatable
使用场景:
在需要对同一个注解多次使用在同一个类,接口,方法,属性等上面时,需要借助@Repeatable
代码示例:

@Repeatable(Person.class)
public @interface Person{String role() default "";}

@Person(role="CEO")
@Person(role="husband")
@Person(role="father")
@Person(role="son")
public class Man{String name="";}

3.5 注解的属性

注解的属性也叫做成员变量。“注解只有成员变量,没有方法”。
注解的成员变量在注解的定义中以 无参的方法 形式来声明,其方法名定义了该成员变量的名字,其返回值定义了该成员变量的类型。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation{
int id();
String msg();
}

上面代码定义了@MyAnnotation 这个注解拥有id和msg两个属性,在使用的时候,我们应该给他们进行赋值,多个属性之间用逗号隔开。

@MyAnnotation(id="3",msg="hello annotation")
public class Test{...}

注解中属性可以有默认值,默认值需要用default关键字指定,比如:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation{
public int id() default -1;

如果一个注解内仅仅只有一个名字为value 的属性时,应用这个注解时可以直接将属性值填写到括号内:

public @interface Check{
String value();
}

上面代码中,Check这个注解只有value这个属性,所以可以这样应用:

@Check("hi")
int a;
等价于:
@Check(value="hi")
int a

最后,还需要注意的一种情况是一个注解没有任何属性,比如:

public @interface Perform{//没有属性}

//使用
@Perform
public void testMethod(){}
【Java】枚举与注解篇 枚举类型和注解类型是 Java 语言中非常强大且实用的特性,它们各自有着独特的设计目的和应用场景。枚举类型通过提供类型安全的常量集合,使代码更加清晰、易读和健壮;注解类型则通过为代码添加元数据信息,实现了代码的灵活配置和功能扩展。在实际开发中,合理运用枚举类型和注解类型可以提高代码的可维护性、可扩展性和开发效率。开发者可以根据具体的需求,将枚举类型和注解类型结合使用,创造出更加高效、优雅的 Java 程序。 阅读详情

相关推荐

MAX96712在车载摄像头系统中的带宽分配与传输能力计算解析

在计算摄像头带宽与传输接口的关系时,需要考虑视频流的像素分辨率、帧率、颜色深度等因素。以 MAX96712 这种 GMSL2 产品为例,它支持每个链路在正向方向以 3Gbps 或 6Gbps 的固定速率工作。

weixin_43199439的博客 3330

Java枚举类与注解

1、私有化类的构造器,保证不能在类的外部创建对象2、在类的内部创建枚举类的实例。声明为:public static final3、对象如果有实例变量,应声明为private final,并在构造器中实例化使用enum定义的枚举类默认继承了java.lang.Enum类,因此不能在继承其他类枚举类的构造器只能使用private权限修饰符枚举类的所有实例必须在枚举类中显示列出(,分隔;结尾)。列出的实例系统会自动添加private static final修饰必须在枚举类的第一行声明枚举类对象。

zssxcj的博客 1753

超分算法 SwinIR: Image Restoration Using Swin Transformer

这篇文章结构比较简单,如果看过Swin-Transformer的话就没什么难点了。作者引入Swin-T结构应用于低级视觉任务,包括图像超分辨率重建、图像去噪、图像压缩伪影去除。网络由一个浅层特征提取模块、深层特征提取模块、重建模块构成。重建模块对不同的任务使用不同的结构。浅层特征提取就是一个3×3的卷积层。深层特征提取是k个RSTB块和一个卷积层构成。RSTB(Res- SwinIR: Image Restoration Using Swin Transformer[ICCV 2021]Abstract1.

qq_45122568的博客 1万+

javadoc注释模板设置及详解

设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素啦。现就每一个元素逐一介绍: 文件(Files)注释标签:/** * @Title: filename∗@Package{file_name} * @Package {package_name} * @Desc

projectNo的博客 1万+

利用makehumancommunity导入人体模型到COMSOL里(需要solidwork)

#makehumancommunity #solidwork #COMSOL

qq_41227634的博客 2158

DDS器件原理与应用(AD9833 AD9834)

是DDS的核心组成部分,用于实现相位的累加,并输出相应的幅值。相位累加器由M位宽加法器和M位宽寄存器组成,通过时钟控制,将上一次累加结果反馈到加法器输入端实现累加功能,从而使每个时钟周期内的相位递增数为,并取相位累加结果作为地址输出给ROM查找表部分。DDS的相位信息被存放在累加寄存器中,虽然幅值和相位不是线性关系,但寄存器累加值和相位可以是线性关系,很容易用寄存器的累加值表达相位信息。

m0_49968063的博客 6445

idea设置类、接口和枚举的注释模板

设置类、接口和枚举的注释 打开Settings后,选择Editor -> File and Code Templates -> Files -> Class: 增加以下模板: /** * @description: ${description} * @version: 0.0.1 * @author: * @createTime: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} **/ ...

快哉此风的博客 1059

arduino uno spi驱动12864

arduino uno spi驱动12864

yvee的博客 2060

第十章 枚举类与注解的使用

一、枚举类的使用 主要内容: 如何自定义枚举类 如何使用关键字enum定义枚举类 Enum类的主要方法 实现接口的枚举类 类的对象只有有限个,确定的。举例如下: 星期:Monday(星期一)、…、Sunday(星期天) 性别:Man(男)、Woman(女) 季节:Spring(春节)…Winter(冬天) 支付方式:Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡) 就职状态:Busy、Free、Voca

qq_42082278的博客 864

MAX30102心率血样模块在STM32F103芯片的程序说明

我希望你已经安装好了Keil MDK5这个软件,也安装了M3内核,可以编译一些STM32F103的一些项目下载程序后步骤: 1-按照下图找到IIC.uvprojx并打开(途中唯一绿色那个图标) 2-编译一次 3-确保0错误,0警告,下图所示 4-点击目标选项,然后找到STM32F103C8,再点debug–CMSIS****(我实际用的JTAG,用不了,选择这个CMSIS****即可)下图所示 5-下图所示,看看你的串口找到了没,找到了就点左下角的OK 6-按图上传到开发板 7-MAX30102接线方法

weixin_51357422的博客 5801

Win11 WSL2 Ubuntu 18.04 ROS Gazebo 图形渲染性能调优:从LLVM到NVIDIA GPU的完整指南

本文详细解决了在Win11 WSL2 Ubuntu 18.04环境中运行ROS Gazebo时图形渲染卡顿的问题。通过诊断默认LLVM软件渲染的瓶颈,指导用户更新Mesa驱动PPA源,并关键性地设置环境变量以强制启用NVIDIA GPU硬件加速,最终显著提升仿真性能与流畅度。

weixin_29204749的博客 283

java中的枚举和注解

枚举:enum例如:enum Light{Red,Yellow,Green}; Light light = light.Red;实际上它生成了class Light extends java.lang.Enum 也可以在enum定义体重添加字段、方法、构造方法(自定义枚举)enum Direction{ EAST("东",1),SOUTH("南",2),WEST("西",3),EAST("

yogima的博客 520

IC 时钟设计核心问题与高质量系统设计指南(附源码)

本文深入探讨了IC时钟设计的核心问题与高质量系统设计方法。时钟系统作为IC的"心脏",其性能直接影响时序稳定性、功耗效率和可靠性。文章从五个维度展开分析:时钟源选择与性能匹配、时钟分配网络设计、抖动抑制、多时钟域管理和功耗优化。针对高质量时钟系统设计,提出了时钟源优化、时钟树结构优化、干扰抑制与仿真验证等具体方法。同时,系统阐述了时钟与复位的协同设计关系,强调异步复位同步释放等技术的重要性。文章还总结了高质量IC系统设计的综合要点,包括电源/信号完整性、时序功耗平衡、可靠性设计及全流程验

Open 1061

Java注解与枚举类

枚举类是一种特殊的类,类对象只有有限个,确定的,我们称此类为枚举类我们在需要定义一组常量时用枚举类。枚举类只有 一个对象时,则可以作为单例模式的实现方式jdk5.0之后可以使用Enum关键字定义,也可以自定义类作为枚举类下面我们先通过class构建枚举类来理解枚举类//声明对象属性,final,private修饰,这也说明了枚举类的属性都是私有final的//私有化构造器并给对象赋值,说明了枚举类构造方法私有//提供当前枚举类的多个对象,说明了枚举类对象都是静态不可修改的。

m0_74075279的博客 1937

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

十二:枚举与注解

跳转到总目录 文章目录01、枚举类的使用1.1、枚举类的理解1.2、自定义枚举类1.3、使用enum关键字定义枚举类1.4、Enum类中的常用方法1.5、使用enum关键字定义的枚举类实现接口02、注解的使用2.1、注解的理解2.2、Annotation的使用示例2.3、如何自定义注解2.4、jdk中4个基本的元注解的使用12.5、jdk中4个基本的元注解的使用22.6、利用反射获取注解信息2.7、jdk8新特性:可重复注解2.8、jdk8新特性:类型注解 01、枚举类的使用 1.1、枚举类的理解 类的对

本人主攻Java,希望自己能成为出色的程序员。 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

第十三章 枚举类和注解

13.1、枚举类 13.1.1、概述 概述:枚举是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。举例:一周只有7天,一年只有12个月等 格式:public enum 枚举名称 {} 13.1.2、自定义枚举类 13.1.2.1、第一版 public class Direction1 { // 创建几个实例 public static final Direction1 FRONT = new Direction1(); public static final Direction1 BEHI

轻松的小希 4493

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

java中的枚举类与注解

java中的枚举类与注解一、枚举类的使用1、 自定义枚举类2、使用enum定义枚举类二、注解(Annotation)1、概述2、常见的Annotation示例3、 自定义 Annotation4、JDK中的元注解1、@Retention2、@Target3、@Documented和@Inherited5、利用反射获取注解信息6、JDK8中注解的新特性 一、枚举类的使用 1、 自定义枚举类 c...

仰望与追逐的博客 2288

Java注解与反射--枚举

Java注解与反射--枚举

2402_89573492的博客 1577

Java之枚举、注解、反射

Java之枚举、注解、反射枚举什么是枚举?枚举类的实现自定义实现枚举类使用关键字enum定义枚举类Enum的常用方法实现接口的枚举类注解注解概述常见的注解反射什么是反射?反射的用途反射的具体作用反射的主要APIClass类获取Class实例的四种方式通过反射创建运行时类的对象通过反射获取运行类的属性及权限修饰符、变量名 、数据的类型通过反射获取运行时类的方法结构及其内部结构通过反射获取运行时类的构造结构通过反射获取运行时类的父类和父类的泛型、注解、接口、所在包通过反射调用运行时类的指定属性、方法、构造方法

qq_45859087的博客 1549

Java枚举与注解

Java枚举与注解知识的学习

2403_88251897的博客 811

枚举与注解(枚举可以重点看一下,注解还是比较简单的)

java的枚举与注解,枚举主要是一次性使用的类,注解就是对代码的一个解释,可以类似于注释的意思

m0_46335449的博客 1264

【Java枚举类与注解】——一篇文章读懂枚举类与注解

为了间接的表示一些固定的值,Java就给我们提供了枚举,是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。格式枚举项 1 , 枚举项 2 , 枚举项 3;} 注意 : 定义枚举类要用关键字 enum示例代码// 定义一个枚举类,用来表示春,夏,秋,冬这四个固定值 public enum Season {}概述对我们的程序进行标注和解释注解和注释的区别注释:给程序员看的注解:给编译器看的使用注解进行配置的优势代码更加简洁,方便格式。

hihielite的博客 717

Java之枚举类与注解

目录1. 枚举类与注解1.1 枚举类1.1.1 枚举类的使用1.1.2 如何定义枚举类1.1.3 enum类中的常用方法1.1.4 使用enum关键字定义的枚举类实现接口的情况1.2 注解(Annotation)1.2.11.2.2 1. 枚举类与注解 1.1 枚举类 1.1.1 枚举类的使用 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类; 2.当需要定义一组常量时,强烈建议使用枚举类; 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 1.1.2 如何定义枚举类 方式一:

Fish_Vast的博客 1079

09 java中的枚举和注解

1. 枚举类 枚举 (enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。 Java 中的每一个枚举都继承自 java.lang.Enum 类。当定义一个枚举类型时,每一个枚举类型成员都可以看作是 Enum 类的实例,这些枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调...

数据知道的博客 1万+

枚举与注解

1.不需要提供setXxx方法,因为枚举对象值通常为只读.2.对枚举对象/属性使用 final + static共同修饰,实现底层优化.(final 和 static 搭配使用可以不导致类加载,效率更高)3.枚举对象名通常使用全部大写,常量的命名规范.4.枚举对象根据需要,也可以有多个属性//演示字定义枚举实现class Season {//类//描述//定义了四个对象, 固定.

2303_82176667的博客 1060

Java 枚举类与注解

Java 枚举类与注解

m0_59740242的博客 1038
上一篇: 第十二节 Java 反射机制
下一篇: 第十四节 XML与JSON
_乐颜
博客等级 码龄7年 15粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值