构造方法

Spring基础组件的使用——@Scope和@Lazy及其验证

纵然是瞬间 提交于 2019-11-27 15:45:24
@Scope和@Lazy及其验证 @Scope @Lazy @Scope 我们大家都知道Spring容器中注册了一个Bean,在默认情况下都是单实例的,我们可以来验证一下,继续沿用我们之前的例子。下面是我们的配置类 @Configuration @ComponentScan ( value = "com.test" ) public class TestConfig { @Scope @Bean public Dog dog ( ) { return new Dog ( "金毛" , 3 ) ; } } 然后我们在测试类中进行测试 public class TestMain { @Test public void test ( ) { AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext ( TestConfig . class ) ; Object dog1 = applicationContext . getBean ( "dog" ) ; Object dog2 = applicationContext . getBean ( "dog" ) ; System . out . println ( dog1 == dog2 ) ; } }

反射

吃可爱长大的小学妹 提交于 2019-11-27 14:53:10
为什么需要反射? 需求:我公司定义了一组接口,然后第三方公司按照我公司的接口实现了一套功能,然后交给我们,但是我们公司的项目已经结束,如何实现动态加载第三方公司提供的功能。(类似于热拔插效果) 什么是反射? 反射就是八类中的各种成分映射成各种对象。等同于解刨,可以拿到类中任何成分。 反射常用类: Class:获取类和类的成员信息 Filed:可访问的类的属性 Method:类的方法 Constructor:类的构造方法 使用反射基本步骤: 1.导入java.lang.reflect.* 2.获得需要操作的类的Java.lang.Class对象 3.调用Class的方法获取Field、Method等对象 4.使用反射API进行操作(设置属性﹑调用方法) 获取类对象的方法: 通过对象----person.getClass(); 通过类名----Person.class; 通过Class.forName("xxxx");------Class.forName("xxxxxx"); 获取类的类对象后可以获取类中的属性、构造方法、非构造方法 现获取类对象 : Class<?> clazz = Class.forName("xxxx.xxx.xxPerson"); 【0】动态创建对象 方法一:使用Class的newInstance()方法,仅适用于无参构造方法 Class clazz

super与this的用法

让人想犯罪 __ 提交于 2019-11-27 14:11:24
1 super和this都是调用其他的构造方法 super放在构造方法的第一条语句,调用父类的某种构造方法,如果没有super语句,会默认调用父类中无参的构造方法,如果父类构造方法指明而且都有参数,子类中会报错,this调用本类中其他某个构造方法,也要放在构造方法第一行 2 父类和子类中有相同名字的成员变量时,父类的会被覆盖,如果想使用父类的成员,应该使用super.方法名或者super.对象名 3 程序中有相同名字的变量时,this可以用来指代当前对象名 如 private String name; public void setName(String name){ this.name=name; } 4 super和this不能在同一个构造方法中 5 super和this都是指代对象,不能在static环境中使用 6 this代表指向本对象的指针,而super是一个Java关键字 ———————————————— super的用法 准备知识:关键字this <1.构造函数传递,this(a,b)表示调用另外一个构造函数; <2. 在一个类的非static成员内部使用,表示当前这个对象; super和this类似 <1.调用父类的构造函数; <2.在一个类中的非static成员内部使用 <3. 调用父类的protected函数 ————————————————

flutter简易教程

久未见 提交于 2019-11-27 13:49:08
跟Java等很多语言不同的是,Dart没有public protected private等关键字,如果某个变量以下划线 _ 开头,代表这个变量在库中是私有的。Dart中变量可以以字母或下划线开头,后面跟着任意组合的字符或数字 变量 变量定义 以下代码是Dart中定义变量的方法: main() { var a = 1; int b = 10; String s = "hello"; dynamic c = 0.5; } 复制代码 你可以明确指定某个变量的类型,如int bool String,也可以用var或 dynamic来声明一个变量,Dart会自动推断其数据类型。 变量的默认值 注意:没有赋初值的变量都会有默认值null final和const 如果你绝不想改变一个变量,使用final或const,不要使用var或其他类型,一个被final修饰的变量只能被赋值一次,一个被const修饰的变量是一个编译时常量(const常量毫无疑问也是final常量)。可以这么理解:final修饰的变量是不可改变的,而const修饰的表示一个常量。 注意:实例变量可以是final的但不能是const的 下面用代码说明: var count = 10; final Num = count; // final 只能赋值一次const Num1 = 10; //

Java 反射

蹲街弑〆低调 提交于 2019-11-27 13:19:33
在编译过程中,无法预知该对象,类或者可能属于那些类,只能依靠程序运行时信息来发现该对象和类的真实信息,而从程序运行过程中,实现程序运行时获取对象和类的信息,这就是反射 获取类 通过反射获取类的方法有如下: public class Test { public int a; public int b; private int c; private int d; public String aa; private String bb; public Test(){} public Test(int a,int b,int c,int d){ this.a=a; this.b=b; this.c=c; this.d=d; } private Test(int c,int d){ this.c=c; this.d=d; } public int getA() { return a; } public void setA(int a) { this.a = a; } public int getB() { return b; } public void setB(int b) { this.b = b; } public int getC() { return c; } public void setC(int c) { this.c = c; } public int getD() {

Python全栈之路系列之面向对象特殊成员

旧城冷巷雨未停 提交于 2019-11-27 12:59:28
类的特殊成员之call #!/usr/bin/env python # _*_coding:utf-8 _*_ class SpecialMembers: # 类的构造方法 def __init__(self): print("My Blog is Url: http://ansheng.me") # 对象的构造方法 def __call__(self): print("My Name is: Ansheng") # 创建一个对象,并且执行类的构造方法 obj = SpecialMembers() # 执行对象的构造方法 obj() # 先执行类的构造方法,然后在执行对象的构造方法 SpecialMembers()() 输出 ansheng@Darker:~$ python3 /home/ansheng/文档/Python_code/sublime/Week06/Day04/s2.py My Blog is Url: http://ansheng.me My Name is: Ansheng My Blog is Url: http://ansheng.me My Name is: Ansheng 类的特殊成员之getitem、setitem、delitem 在学习过程中有什么不懂得可以加我的 python学习交流扣扣qun,784758214 群里有不错的学习视频教程

JavaSE基础知识——01

时光怂恿深爱的人放手 提交于 2019-11-27 12:48:09
1.面向对象的语言 顶级(top-lever) public class A{ 成员级别(member-lever) public void method(){ 方法级别(method-lever) } } System.out.println();只能出现在方法级别 2.变量的两种类型 (1)基本数据类型: 数值:整型、浮点 字符:char 布尔:boolean (2)引用类型: 数组类型的引用:int[] a 类类型的引用:Node cur 接口类型的引用:interface IC{} IC c; Java中从来没有对象类型的引用 3.引用是什么? 引用是指向/找到对象的一个线索,当引用的值是null时,表示该引用没有指向任何对象 (1)int[] a = {1,2,3}; a是一个int[] 的引用,指向的是一个int[] 的对象 (2)class A{} class B extends class A{} A a = new A() : a是一个A的引用,指向A的对象 大类型的引用可以指向小类型的对象,小类型的引用不可以指向大类型的对象 (3)interface IC class C implement IC{} IC c = new C(); (4)设计一个表现多态的,数组类型的引用? Object [] array = new String[10]; 4.变量的四种形式

java中this用法详解

◇◆丶佛笑我妖孽 提交于 2019-11-27 12:36:23
一:用法总括   this关键字必须放在非静态方法内:   this关键字代表自身,在程序中主要的使用用途有以下几个方面:   1:引用成员变量。   2:在自身构造方法内部引用其他构造方法。   3:代表自身类对象   4:引用成员方法 二:引用成员变量   在一个类的方法或构造方法内部,可以使用“this.成员变量名”来引用成员变量,参数名与成员变量名重叠时不能省略,不重叠时可以省略。 例如: public class ReferenceVariable { private int a; public ReferenceVariable(int a) { this.a = a; } public int getA() { return a; } public void setA(int a) { this.a = a; } }   构造方法和set方法内部参数a与成员变量a名称一样,变量名发生重叠,java语言规定当变量名作用范围重叠时,作用域小的变量覆盖作用域大的变量。当然,为了增加代码的可读性,一般将参数名和成员变量名设为一致,这样访问成员a则必须使用this进行引用。 三:引用构造方法   在一个类的构造方法内部,也可以使用this关键字引用其他的构造方法,达到优化代码的目的。 例如: public class ReferenceConstructor { private

java13关键字

断了今生、忘了曾经 提交于 2019-11-27 12:07:19
  this 关键字 this调用构造方法有参构造this(参数列表),无参构造this(); this必须写在方法中的第一行 当成员变量和局部变量重名时可以在成员变量名前面加上this.来区别成员变量和局部变量 super关键字 在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super();语句。 子类会继承父类中的内容,所以子类在初始化时,必须先到父类中去执行父类的初始化动作。这样,才可以使用父类中的内容。 格式 当父类中没有空参数构造方法时,子类的构造方法必须有显示的super语句,指定要访问的父类有参数构造方法。 super也要写在第一行 当this和super同时存在是因为都要写在第一行 可以把this写到super调用的方法里面 调用本类中的构造方法 this(实参列表); 调用父类中的空参数构造方法 super(); 调用父类中的有参数构造方法 super(实参列表); final关键字 继承的出现提高了代码的复用性,并方便开发。但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写。可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,需要使用到一个关键字final,final的意思为最终,不可变。final是个修饰符,它可以用来修饰类,类的成员,以及局部变量。不能修饰构造方法。