枚举类的理解

利用OrthoFinder做泛基因家族聚类分析 这条命令会将 Arabidopsis_thaliana.TAIR10.59_longest_trans.pep.fa 文件中的所有序列ID,去掉ID中的空格后面的部分,只保留 > 后第一个空格之前的基因ID,并将结果保存在 An1.fasta 文件中。muscle 是一种常用的多序列比对工具,用于基因组或蛋白质序列的比对。基因家族(Gene family),是来源于同一个祖先,由一个基因通过基因重复而产生两个或更多的拷贝而构成的一组基因,它们在结构和功能上具有明显的相似性,编码相似的蛋白质产物。 阅读详情

枚举类

Enum类

//com.insanus.EnumClass.java
package com.insanus;
public class EnumClass {
    public static void main(String[] args) {
        for(TryEnum i: TryEnum.values()) {
            System.out.println(i);
            //values()返回enum实例的数组
        }
        //关于Enum的静态方法valueOf
        //static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
        TryEnum x = Enum.valueOf(TryEnum.class, "One");
        TryEnum y = TryEnum.valueOf("One");
        System.out.println(x == y);
        //这里显示是True

    }
}

enum TryEnum {
    One, Two
}/* Output:
One
Two
True
*///:~

因为Enum类中并没有values方法
所以我们来探讨一下values的神秘之处

//com.insanus.Values.java
import java.lang.reflect.Method;
import java.util.Set;
import java.util.TreeSet;

public class Values {
    public static void main(String[] args) {
        Class t = Enum.class;
        Class i= TryEnum.One.getClass();
        Set<String> temp = new TreeSet<>();
        for (Method in: t.getMethods()) {
            temp.add(in.getName());
        }
        for (Method in: i.getMethods()) {
            if(!temp.contains(in.getName()))
                System.out.println(in.getName() + "\n" + in.toString());
        }
    }
}

enum TryEnum {
    One
}/* Output:
values
public static com.insanus.TryEnum[] com.insanus.try_module.TryEnum.values()
*///:~

我们观察到,values并不是Enum的方法,但是在创建enum实例的时候,却出现了这个方法。可以推导出的是,这个values方法是编译器添加的静态方法。

我们写了一小段代码测试一下。

enum TryEnum {
    One;
    public TryEnum[] test() {
        return values();
    }
}

通过

static enum

//com.insanus.EnumClass1.java
package com.insanus;
public enum EnumClass1 {
    One
}

//com.insanus.TryEnum1.java
package com.insanus;
import static com.insanus.EnumClass1.*;
public TryEnum1 {
    public static void main(String[] args) {
        EnumClass1 t = One;
    }
}

enum添加新方法

因为enum可以当做一个特殊的类,所以可以添加和覆盖方法。甚至可以添加main。

//com.insanus.MethodEnum.java
package com.insanus;
public enum MethodEnum {
    One;
    //注意,不能没有添加序列(singleton的enum实现)
    public static void main(String[] args) {
        System.out.println("From Enum");
    }
}

switch和enum

//com.insanus.SwitchEnum.java
package com.insanus;
public enum SwitchEnum {
    One, Two;
    public static void main(String[] args) {
        SwitchEnum i = SwitchEnum.Two;
        switch(i) {
            case One:
                System.out.println("One");
                break;
            case Two:
                System.out.println("Two");
                break;
        }
    }
}/* Output:
Two
*///:~

使用接口组织枚举

//com.insanus.Values1.java
package com.insanus;
public class Values1 {
    public static void main(String[] args) {
        TryEnum1 i = TryEnum1.One.ONE;
    }
}
//嵌套接口
interface TryEnum1 {
    enum One implements TryEnum1 {
        ONE, TWO
    }
    enum Two implements TryEnum1 {
        THREE
    }
}

解释EnumSet和EnumMap的工作原理

EnumSet
从上面的文档,我们多少能猜的出。EnumSet利用了enum的“单例”特性,当每次添加进一个enum,就为其创造实例。

//com.insanus.TestEnumSet.java
package com.insanus;
public class TestEnumSet {
    public static void main(String[] args) {
        EnumSet<TestEnum> i = EnumSet.noneOf(TestEnum.class);
        i.add(TestEnum.Two);
        i.add(TestEnum.Two);
        System.out.println(i);
    }
}

enum TestEnum {
    One, Two;
}/* Output:
[Two]
*///:~

EnumMap
我们观察一下这句话
EnumMap<K extends Enum<K>,V>
应该和EnumSet的原理差不多

常量相关的方法

//com.insanus.EnumModel.java
package com.insanus;
public enum  EnumModel {
    One(5) {
        @Override
        void view() {
            System.out.println("来自One, id为" + super.type);
        }
    },
    Two(7) {
        @Override
        void view() {
            System.out.println("来自Two, id为" + super.type);
        }
    };
    abstract void view();
    private int type;
    EnumModel(int type) {
        this.type = type;
        System.out.println("父类构造器");
    }
    public static void main(String[] args) {
        EnumModel.One.view();
    }
}/* Output:
父类构造器
父类构造器
来自One, id为5
*///:~

我们观察到父类构造器被调用了两次,由此可以得出,enum为每个常量都生成了一个实例。

信捷PLC XD5系列运动控制(10轴)编程应用篇 项目PLC采用XD5-60T10-E,36DI 24DO 晶体管输出,支持10路脉冲输出功能。TMR指令定时器时基可以自己设定,这点比其他品牌PLC方便。ZRN指令我们需要上升沿指令触发。 5、变址寻址 该说不说这个变址寻址是真的强,比西门子指针、三菱的变址寄存器Z 、V都要更加灵活。 7、特殊寄存器:时钟 8、如何建立PLC通讯............... 阅读详情

相关推荐

【UV打印机】PrintExp打印软件教程(四)-设置校准电压

序号名称功能说明1校准材料设置定义当前打印材料,不同的材料参数绑定不同的校准值2向导勾选进行校准向导操作3校准类型包括喷头安装、步进校准、喷头间距、套色校准、双向校准4类型子项同类型子项5操作步骤校准存在步骤和校准说明示意图。

Print World的专栏 5077

枚举法(穷举法)

枚举法

ssssssyyyysss的博客 2113

Unity UGUI深度优化

Unity UGUI优化相关

不定时分享所学所得,包括游戏开发和其他收获! 2720

枚举类和集合

😹 作者: gh-xiaohe 😻 gh-xiaohe的博客 😽 觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!!

gh_xiaohe的博客 1145

Agisoft Metashape 基于RTK技术的无人机航测免像控技术流程

利用无人机进行航空摄影测量,其使用方便、快速获得成果,已经是测绘行业外业生产的主要方式。RTK定位系统的出现,其厘米级的定位系统,使得航测无人机在作业时,能够准确获取拍照时的GPS位置,能够大量减少像控点,即使不使用像控点也能满足规范对精度的要求。可以有效解决特殊地形(如山川、峡谷、河流、沼泽、水库等)外业人员很难布设像控点的情况。

penglu366366的博客 2189

YOLOv11改进 | 主干/Backbone篇 | 利用RT-DETR主干网络PPHGNetV2助力yolov11有效涨点(轻量化目标检测网络)

本文给大家带来利用RT-DETR模型主干HGNet去替换YOLOv11的主干,RT-DETR是今年由百度推出的第一款实时的ViT模型,其在实时检测的领域上号称是打败了YOLO系列,其利用两个主干一个是HGNet一个是ResNet,其中HGNet就是我们今天来讲解的网络结构模型,这个网络结构目前还没有推出论文,所以其理论知识在网络上也是非常的少,我也是根据网络结构图进行了分析(精度mAP提高0.05)。YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备​目录一、本文介绍。

Snu77的博客 3721

穷举法

枚举法,常常称之为穷举法,是指从可能的集合中一一枚举各个元素,用题目给定的约束条件判定哪些是无用的,哪些是有用的。能使命题成立者,即为问题的解。采用枚举算法解题的基本思路:(1)    确定枚举对象、枚举范围和判定条件;(2)    一一枚举可能的解,验证是否是问题的解下面我们就从枚举算法的的优化、枚举对象的选择以及判定条件的确定,这三个方面来探讨如何用枚举法解题。例1:百钱买

FlowShell的专栏 2846

CTK Plugin Framework插件框架学习1--Qt编译CTK

【代码】Qt编译CTK。

贝勒里恩的博客 7435

java enum contains_java.util.EnumMap.containsValue()方法实例

全屏java.util.EnumMap.containsValue(Object value)方法确定此显示的一个或多个键映射到指定的值。声明以下是java.util.EnumMap.containsValue()方法声明publicbooleancontainsValue(Objectvalue)参数value-- 其是否存在于此映射中的值进行测试。返回值如果此映射一个或多个键映射到这个...

weixin_42350606的博客 549

基于MATLAB的BOC调制信号捕获算法仿真

然而,在实际的使用过程中,由于室内信号衰减以及遮挡等因素的影响,接收机在GPS信号弱化时会很容易丢失导航信息。与其他的调制方式相比,BOC具有较好的抗多径性能和更高的频带效率。通过本文的介绍,我们可以更加深入地了解BOC调制信号的捕获算法,并且掌握了如何使用MATLAB软件对其进行仿真实现。通过实验数据的分析,我们可以看出该算法对于BOC调制信号的捕获具有较高的准确率和稳定性,因此具有一定的工程应用价值。在BOC调制完成后,我们需要进行信号的捕获,这一步涵盖了信号检测、码偏差估计、载波频率估计等过程。

2301_79326559的博客 567

(第78天)DB RU 补丁升级:19C 升级到 19.22

目前 Oracle 19C 是最新的稳定支持的版本,生产环境中使用的越来越多。当然,随着客户使用量的增多,自然无可避免的产生了很多 BUG,Oracle 每季度都会发布一个 RU 补丁来修复当前季度所产生的一些重要 BUG 补丁。作为 DBA,DB 补丁修复必然是需要掌握的一项技能。本文将介绍如何将数据库升级到最新的 RU 版本。

LuciferLiu_DBA 846

理解Java的枚举类

理解Java的枚举类

m0_46306264的博客 199

(9-2)离线强化学习:离线强化学习的主流方法

本文介绍了三种离线强化学习的主流约束策略优化方法:BCQ、CQL和Fisher-BRC,并通过CartPole环境进行性能比较。BCQ利用生成模型约束动作选择并引入扰动网络;CQL通过正则化Q值抑制对未见状态-动作对的高估;Fisher-BRC使用Fisher散度正则化策略分布。实验结果表明,三种方法各有优势,其中CQL表现最为稳定。文章还指出,为获得更好的性能,需要更大的数据集和更长的训练轮次。这些方法通过限制策略优化范围,有效提高了离线强化学习的稳定性和泛化能力。

码农三叔 1544

枚举类的理解及使用

一、枚举类的使用 1.枚举类的理解: 当一个类的对象是有限个确定多个的时候,称此类为枚举类 2.当需要定义一组常量时:强烈建议使用枚举类 3。如果枚举类只有一个对象,则可以作为单例模式的实现方式 二、如何定义枚举类 *方式1:jdk5.0之前,自定义枚举类 *方式2:在jdk5.0时,可以使用enum关键字定义枚举类 三、Enum类中的常用方法: values()方法:返回枚举类型的对象数组,该方法可以很方便的遍历所有的枚举值 valueof(String str):可以把一个字符串转为对应的

一枚正在长大的程序猿 382

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

关于java枚举类的理解

java核心技术卷上的枚举类示例代码是这样的: enum Size{ SMALL("S"),MEDIUM("M"),LARGE("L"),EXTRA_LARGE("XL"); private String abbreviation; private Size(String abbreviation){this.abbreviation=abbreviation;} public String ge...

qq_41374768的博客 267

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python中枚举类的理解

读了两篇文章后总结了关于python中枚举类的理解 枚举是啥、为什么枚举、如何定义及使用枚举、枚举类和普通类的区别

qq_40967086的博客 3754

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

枚举类的一些自己的理解

<br />通过观看张老师对枚举类的讲解,我字再查了一些课外书,归纳了以下一些关于枚举类的使用<br />,总的说来,枚举类主要用以限定一个类产生对象的个数。<br />枚举类中自己定义了一些方法,<br />比如<br />compareTo(E o)对象比较<br />equals(E o)判断是否相等<br />name() 获得枚举的名称<br />ordinal()返回枚举常量的序数<br />valueOf()方法找到一个枚举对象<br />在Enum类中已经实现了comparable接口,因此

chen5287603的专栏 627

enum枚举类,java中枚举类的概念,什么是枚举类enum,结合实战案例理解

enum、java

zhangfuping123456789的博客 1万+

Java中枚举类的深入理解

概述 在此之前由于个人在学习和开发中对枚举类的应用较少,所以对枚举类的知识点并没进行深入的了解,但最近写代码中突然想到了枚举类,抱着完善自身的知识的目的,就较为深入的了解了Java中的枚举类。 我在学习任何东西之前都会大致弄清楚这个东西存在的目的是什么,这样才能更加深入的理解一些东西。同样的,在学习枚举类之前,我们也需要摸清楚Java5才出来的枚举类到底有什么作用。 为什么会出现枚举类...

听得到微笑的博客 490

枚举类型理解

上篇说到了C语言数据类型中的基本数据类型和void类型。这里,重点说一哈枚举类型。我刚开始接触枚举的时候,有一些东西很是想不明白,在后来的开发中,渐渐的解开了它。我个人理解,枚举类型就是标记,用一个程序员容易记忆和理解的词去标记数字,这样在代码的编写过程中才不容易出错,也不用花大的代价回去找前面定义的量。它也有着很多的缺点,它作为一个单独的数据类型,没有了如同数组那样的操作,这样就需要经常转换类型。所以,枚举其实并不常用。

m0_37681833的博客 1387

深入理解Java枚举类型(enum)

详情见: 深入理解Java枚举类型(enum)

qq_35171483的博客 254

枚举类型的理解

枚举类型(Enumeration Type),通常简称为枚举(Enum),是一种由用户定义的类型,它包含了一组命名的整型常量。在编程中,枚举类型用于将一个变量的可能值限制在一个固定的集合中,从而增加代码的可读性和可维护性。

m0_63764282的博客 851

枚举类理解与使用

一、枚举类的使用 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 2.当需要定义一组常量时,强烈建议使用枚举类 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 二、如何定义枚举类 方式一:jdk5.0之前,自定义枚举类 public class TestEnum { public static void main(String[] args) { Person xg = Person.XG; System.out.println(x

qq_24991197的博客 146
上一篇: 内部类的理解
下一篇: Effective java读书笔记(2)
insanuscsdn
博客等级 码龄11年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值