虽然这篇文章的标题,看起来是有点找抽——既然一个类是空的,那不就是说里面啥也没有嘛?...比如这样: class empty { }; 上面定义了一个真的很空的空类,一对大括号里面除了空气之外,真的什么都没有!...其次,注意到类node中包含引用成员name,以及非静态的const型成员age,他们之中的任一个,都会导致系统拒绝生成默认的赋值操作符函数。...),那么 x1 = x2 会让 x1.name 指向 s2 吗?...因为引用一旦指定了关联的目标就再也不能修改。那么, x1 = x2 会让 x1.name指向的s1的值变为"bb"吗?
十三,枚举类enum 如果有一些相关的常量,如星期,月份,颜色,可以将其它们定义为枚举类型。 枚举类型常用的方法有name和ordinal。 name():查看枚举常量值的名字。...十六,异常处理 Java中的异常包括两种体系:Error和Exception. Error指的是严重的错误,程序一般对此无能为力。...十八,构造方法 构造方法是类的一个特殊的方法,构造方法名就是类名。 构造方法没有return返回值,也没有void声明。...包括类的名字,类的属性和方法签名,类的继承关系等等。 当加载进一个class类文件时,JVM会创建一个Class类型的实例来保存类的信息。 1,获取Class类型实例 ?...Java 声明变量时,先声明类型,再声明变量名,而Scala则先变量名,必要时用冒号说明类型,类似Python。
Scala调用Java代码 常见问题与易错点 包名与导入差异:Scala使用.作为包分隔符,与Java一致,但在导入语句上有所不同。...如何避免 明确导入:在Scala中使用import时,确保导入路径的准确性,特别是对于Java的静态方法和常量。...了解重载规则:熟悉Scala如何解析Java重载方法,必要时使用@scala.reflect.BeanProperty等注解来辅助。...代码示例 假设有一个Java类: // Java public class JavaUtil { public static String formatGreeting(String name)...暴露静态方法:通过伴生对象提供类似Java静态方法的接口,利用@ScalaSignature等注解保持兼容性。
java封装操作如下: 将属性进行私有化 提供一个公共的set方法,用于对属性赋值 提供一个公共的get方法,用于获取属性的值 定义一个对象 class Person{ /** * id...使用get/set 不就是用来访问和操作私有属性的吗? 使用 @BeanProperty 居然还必须时 public 那么定义该注解的有何用? 如下:不使用 get/set 可以进行操作。...---- 继承 java中的继承 语法: [修饰符] class 类名 extends 父类名{类体} 特性: 使用 extends 关键字用于继承 被标识为 final的类不能被继承, 只能单继承...被继承的类可以获取它所有非 private 修饰的属性和方法。...子类可以重写父类的方法 scala中的继承 语法: class 类名[(参数列表)] extends 父类名[参数列表] 特性: 使用 extends 关键字用于继承 同java一致,scala
, 也就是自定义常量. var定义的是可重新赋值的变量 注意: scala中定义变量时, 类型写在变量名后面 3.3 示例 **需求:**定义一个变量保存一个人的名字"tom" 步骤 打开scala...使用双引号 使用插值表达式 使用三引号 4.1 使用双引号 语法 val/var 变量名 = “字符串” 示例 有一个人的名字叫"hadoop",请打印他的名字以及名字的长度。...最好做到见名知意. 5.3 命名规范 6. 数据类型 6.1 简述 数据类型是用来约束变量(常量)的取值范围的....格式 val/var 变量名:数据类型 = 具体的值.toXxx //Xxx表示你要转换到的数据类型 参考代码 val a:Double = 5.21 val b:Int = a.toInt 7.4...String类型的数据转换成其对应的值类型 格式: val/var 变量名:值类型 = 字符串值.toXxx //Xxx表示你要转换到的数据类型 注意: String类型的数据转成Char类型的数据
命名规范:按照如下规则命名com.公司名.项目名.业务模块名 Scala中的两种包管理方式 第一种:和 Java 的包管理风格相同,每个源文件一个包,包名用.进行分隔以表示包的层级关系,包名和源文件所在路径不要求必须一致...: 一个源文件中可以声明多个 package 子包中的类可以直接访问父包中的内容,而无需导包 包对象 定义包对象: package object 包名{ // 代码块 } Scala 中可以为每个包定义一个同名的包对象...一个.java文件 有一个 public 类。 Scala中没有 public关键字,默认就是公共的,一个.scala 中可以写多个类。声明类时不能加public,会报错。类名不要求和文件名一致。...如果需要和其他框架互操作,必须提供Java Bean规范的getter和setter的话可以加@scala.beans.BeanProperty注解。...class 子类名 extends 父类名 { 类体 } 子类继承父类的属性和方法。 Scala和Java一样都是单继承的。 继承的调用顺序,父类为先,子类在后。
把你们的想法在在下面评论席上发表出来 小编会一个一个看的 Java已经成为历史。它无法发展成现代语言,同时保证向后兼容性。...但它为我们带来了最好的JVM生态系统,并引导了许多优秀语言的诞生,如Groovy、Scala、Clojure、Kotlin等。 ? ▌欢迎年纪最小的Kotlin!...这样就能避免由于错误的类型转换导致的异常。 同一个对象内的调用序列中,无需再重复类型名 Kotlin提供了with结构以方便反复调用同一个对象的方法,这样就无需每次都指明变量名。...与Scala不同,Kotlin没有自己的集合库,它只是扩展了JDK的集合。因此在Java和Kotlin的集合类型之间转换无需使用胶水代码。...可以获得许多最佳实践: 所有类都是final; 集合是immutable的; 通过必须的关键字实现重载,而不是可选的注解; 没有必须处理的异常(checked exception); 没有原始(Raw)
字符串字面量 多行字符串的表示方法 Null 值 Scala 转义字符 Scala 变量 变量声明 总结: 创建测试类: 【day1/demo1.scala】 这里是有包名(后面有讲述)的...类名 - 对于所有的类名的第一个字母要大写。 如果需要使用几个单词来构成一个类的名称,每个单词的第一个字母要大写。...字符数字使用字母或是下划线开头,后面可以接字母或是数字,符号" Scala 的命名规则采用和 Java 类似的 camel 命名规则,首字符小写,比如 toString。类名的首字符还是使用大写。...Scala 程序里,语句末尾的分号通常是可选的。如果你愿意可以输入一个,但若一行里仅 有一个语句也可不写。另一方面,如果一行里写多个语句那么分号是需要的。...二、常量 在程序运行过程中其值不会发生变化的量叫做常量。如:数值 3,字符'A'。 在 Scala 中,使用关键词 "var" 声明变量,使用关键词 "val" 声明常量。
“二哥,这节讲注解吗?”三妹问。 “是的。”我说,“注解是 Java 中非常重要的一部分,但经常被忽视也是真的。之所以这么说是因为我们更倾向成为一名注解的使用者而不是创建者。...@Override 注解用过吧?但你知道怎么自定义一个注解吗?” 三妹毫不犹豫地摇摇头,摆摆手,不好意思地承认自己的确没有自定义过。 “好吧,哥来告诉你吧。”...1)TYPE:用于类、接口、注解、枚举 2)FIELD:用于字段(类的成员变量),或者枚举常量 3)METHOD:用于方法 4)PARAMETER:用于普通方法或者构造方法的参数 5)CONSTRUCTOR...4)JsonField 注解有一个参数,名字为 value,类型为 String,默认值为一个空字符串。 “为什么参数名要为 value 呢?有什么特殊的含义吗?”三妹问。...“那 default "" 有什么特殊含义吗?”三妹继续问。 “当然也是有的,它允许我们在一个字段上直接使用 @JsonField,而无需指定参数的名和值。”我回答说。
注解是 Java 中非常重要的一部分,但经常被忽视也是真的。之所以这么说是因为我们更倾向成为一名注解的使用者而不是创建者。@Override 注解用过吧?@Service 注解用过吧?...但你知道怎么自定义一个注解吗? 恐怕你会摇摇头,摆摆手,不好意思地承认自己的确没有自定义过。 ?...1)TYPE:用于类、接口、注解、枚举 2)FIELD:用于字段(类的成员变量),或者枚举常量 3)METHOD:用于方法 4)PARAMETER:用于普通方法或者构造方法的参数 5)CONSTRUCTOR...4)JsonField 注解有一个参数,名字为 value,类型为 String,默认值为一个空字符串。 为什么参数名要为 value 呢?有什么特殊的含义吗?...那 default "" 有什么特殊含义吗? 当然也是有的,它允许我们在一个字段上直接使用 @JsonField,而无需指定参数的名和值。 05、使用注解 是骡子是马拉出来遛遛,对吧?
常见的前缀可以分为以下几种: image.png 类命名 类名使用大驼峰命名形式,类命通常时名词或名词短语,接口名除了用名词和名词短语以外,还可以使用形容词或形容词短语,如Cloneable,Callable...和类名不同的是,方法命名一般为动词或动词短语,与参数或参数名共同组成动宾短语,即动词 + 名词。一个好的函数名一般能通过名字直接获知该函数实现什么样的功能。...如类名采用User4RedisDO,方法名getUserInfoFromRedis,convertJson2Map等。 代码注解 注解的原则 好的命名增加代码阅读性,代码的命名往往有严格的限制。...// 根据id获取信息【废话注解】getMessageById(id) Advance with the time 注解应该随着代码的变动而改变,注解表达的信息要与代码中完全一致。...image.png 属性注解 在每个属性前面必须加上属性注释,通常有一下两种形式,至于怎么选择,你高兴就好,不过一个项目中要保持统一。
var 变量名 [: 变量类型] = 初始值 val 常量名 [: 常量类型] = 初始值 举个栗子: var a: Int = 10; val b: Int = 22; //...变量类型可以省略 var a = 10; val b = 22; 由于Scala是一个函数式编程语言,所以能用常量的地方不用变量。...引用类型常量,不能改变常量指向的对象,可以改变对象的字段。 不以;作为语句结尾,scala编译器自动识别语句结尾。...Scala中的数据类型 Scala中一切数据都是对象,Any是所有数据的父类。...Unit为Scala中的一个数据类型,对应Java中的void,表示方法没有返回值,只有一个单例对象,输出为符串(),而void是一个关键字 Scala中默认为低精度数据类型转为高精度数据类型(自动转换
Java和Scala的区别 1、变量声明 var变量;val常量;Scala支持自动类型推断 Scala更多的是采用常量,而不是变量来解决问题,这样带来的好处是可以减少多线程并发安全问题,特别适合高并发分布式的场景...6、类 Scala类中的字段自动带有getter和setter方法,另外可以使用@BeanProperty注解来生成Java中的Get/Set方法。...Scala中的每个类都有一个主构造方法,这个构造方法和类定义“交织在一起”,类的参数直接成为类的字段,主构造方法执行类体中的所有语句。...,内部也看不到外部 9、通配符 Java中使用*进行通配 Scala中使用_进行通配 10、默认导入的类 Scala默认java.lang包、Scala包、Scala.Predef类 Java默认导入java.lang...包 11、特质trait可以类比Java中的接口,但是和接口非常不一样 Java中称为类实现了接口,Scala中称为混入了特质 和Java中的接口不同,Scala中的特质可以包含带有方法体的方法(JDK8
如果想要动态读取配置文件中的某个系统属性,可以使用@Value注解。 等等,还有很多。。。 前面几种常用的注解,在我以往的文章《@Autowired的这些骚操作,你都知道吗?》...配置文件中的系统属性名用 驼峰标识 或 小写字母加中划线的组合,spring都能找到配置类中的属性名userName进行赋值。 由此可见,配置文件中的系统属性名,可以跟配置类中的属性名不一样。...那么,@Value注解中定义的系统属性名也可以不一样吗? 答案:不能。如果不一样,启动项目时会直接报错。...@Value可以注入:成员变量、常量、方法、静态方法获取到的值,到相应的成员变量中。...8.2 #{} 主要用于通过spring的EL表达式,获取bean的属性,或者调用bean的某个方法。还有调用类的静态常量和静态方法。
官方注释上也说了,可以通过反射获取,前面也说到了,自定义注解通常都是基于反射来实现各种功能的,所以,这个将成为日后生涯中最常用的一个变量!...我说没用的话,你可能会干我,但是他确实没用!常用在那呢?JDK内置注解例如,你最熟悉的 @Override,开心吗?终于见到一个熟悉的了,看下官方对他的解释 批注将被编译器丢弃。...@Target(ElementType.TYPE):无独有偶,这个也是一个重点、重点、重点。开心吗!你不开心,我能猜出来!...ElementType.FIELD:标记此注解能够加在 字段声明(包括枚举常量),字段声明就是成员变量哈! ElementType.METHOD:见名知意思,标记在方法声明上!...等同于类名 接口名 Stringvalue()default"";这个和就值得考究了,关于用法一会再说,这里只说 default""这个东西,就是日后你在使用的时候不调用,他就会默认使用 default
新建res文件夹,目录下新建META-INF文件夹,目录下新建services文件夹,目录下新建javax.annotation.processing.Processor文件,然后将我们自定义注解处理器的全类名写到此文件...INTERFACE 没有用更特殊的种类(如 ANNOTATION_TYPE)描述的接口。 ENUM_CONSTANT 一个枚举常量。...如果你在process()中抛出一个异常,那么运行注解处理器的JVM将会崩溃(就像其他Java应用一样),这样用户会从javac中得到一个非常难懂出错信息。...主要功能为自定义一个注解,此注解只能用在public的方法上,我们通过注解处理器拿到类名和方法名存储到List集合中,然后生成通过参数选项指定的文件,通过此文件可以获取List集合。...很高兴你能阅读到这里,此时再去看EventBus 3.0中的注解处理器的源码,相信你可以很轻松地理解它的原理。 注意:如果你clone了工程代码,你可能会发现注解和注解处理器是单独的module。
((ResultNotifyServiceImpl) AopContext.currentProxy()) 手动获取当前类的代理 3.必须是public方法,private代理失败。...一个if不通过,直接return,避免里面继续嵌套if else 8.if判断常量放前面 9.需要有默认值,默认值以default开头,StringUtils.defaultString(业务逻辑值可能为空...但从功能上来看没有什么问题,但是确实造成了影响,后续迭代发展这里可能埋下隐患) 类名,方法名,常量,异常处理 参数校验尽量提取能抽到一个方法抽取到一个方法中 方法和类上一定要有注释 清楚职能 a调b,b...调c,c调d,d调f 特别糟糕 应该是有一个主方法: a 调 b,c,d,f 提供代码质量:一开始进行类设计的时候没有梳理好,没有想清楚每个类和方法的职能, 就是一条线顺着写下去,a方法调b,b...正常都是校验不通过直接return,不会接着往下判断,不要被此影响) 10.避免重复代码 11.if判断常量放前面,避免可能为空的情况 12.set,map,list等使用工具类去创建,haspmap需要指定初始化大小
@NonNull的情况却不知道它是干什么的,这篇文章将解答你的疑问。 ...Nullness注解 使用@NonNull注解修饰的参数不能为null。...资源类型注解 是否曾经传递了错误的资源整型值给函数,还能够愉快的得到本来想要的整型值吗?资源类型注解可以帮助我们准确实现这一点。...IntDef和StringDef注解 我们要介绍的最后一种类型的注解是基于Intellij的“魔术常量”检查机制(http://blog.jetbrains.com/idea/2012/02/...很多时候,我们使用整型常量代替枚举类型(性能考虑),例如我们有一个IceCreamFlavourManager类,它具有三种模式的操 作:VANILLA,CHOCOLATE和STRAWBERRY。
前言 Scala中的模式匹配类似于Java中的switch语法,但是更加强大。...:13ffd11 密码长度不够 数字校验 请输入你的密码:2222414134132 不能全为数字 字母校验 请输入你的密码:afafasfasdfas 不能全为字母 混合输入 请输入你的密码:123abc123...样例类: 其实就是伴生类和伴生对象的封装 语法: case class 类名([val/var]属性名:类型,...)...定义一个类: class Person(val name:String,val age:Int,val sex:Char) 这是一个普通类,若要定义成样例类,需要加上 case case class Person...{ case Person(x,y,z) => println(s"姓名:$x;年龄:$y;性别:$z") } } 姓名:张三;年龄:18;性别:男 普通类可以进行模式匹配吗?
和类名不同的是,方法命名一般为动词或动词短语,与参数或参数名共同组成动宾短语,即动词 + 名词。一个好的函数名一般能通过名字直接获知该函数实现什么样的功能。 ...// 根据id获取信息【废话注解】 getMessageById(id) Advance with the time 注解应该随着代码的变动而改变,注解表达的信息要与代码中完全一致。.... * * 类的介绍:这是一个用来做什么事情的类,有哪些功能,用到的技术..... * * @author 类创建者姓名 保持对齐 * @date 创建日期 保持对齐 * @version ...属性注解 在每个属性前面必须加上属性注释,通常有一下两种形式,至于怎么选择,你高兴就好,不过一个项目中要保持统一。 ...异常类型 注明从此类方法中抛出异常的说明 */ 而简单注解往往是需要工程师字节定义,在使用注解时应该注意一下几点: 枚举类的各个属性值都要使用注解,枚举可以理解为是常量,通常不会发生改变,通常会被在多个地方引用
领取专属 10元无门槛券
手把手带您无忧上云