string类

单元测试不可测试那些类(无抽象、静态类、静态方法)

点点圈 提交于 2019-11-28 00:14:17
实际上“单元测试不可测试那些类(无抽象、静态类、静态方法)”是个伪命题,因为事实是:无抽象、静态类、静态方法都是不可单元测试的。那么,如果我们要写出可测试的代码,又要用到这些静态类等,该怎么办,实际上我们需要两个步骤: 1:为它们写一个包装类,让这个包装类是抽象的(继承自接口,或者抽象类,或者方法本身是Virtual的); 2:通知客户端程序员,使用包装类来代替原先的静态类来写业务逻辑; 实际上,微软也是这么干的,我在上一篇博文《 单元测试WebForm的UI逻辑及文件上传 》写到,最典型的不可测试类,那就是WebForm架构的网站中,对Response等的模拟。查看Response这个类: namespace System.Web { public sealed class HttpResponse { ... } } 很明显,如果我们在某个WebForm的后台方法中,直接使用它的话: protected void Page_Load(object sender, EvengArgs e) { this.Response.Write("test u"); } 该后台代码逻辑就无法进行单元测试了,因为类似MOQ的框架所依赖的是代码本身具有可被重写行,如果某个类本身是静态的,就无法在运行时用模拟类替换掉实际类。 所以,写一个包装类吧,我们看到微软为Response写了一个包装类

java8新特性之Optional类

╄→гoц情女王★ 提交于 2019-11-27 23:49:25
NullPointException可以说是所有java 程序员 都遇到过的一个异常,虽然java从设计之初就力图让程序员脱离指针的苦海,但是指针确实是实际存在的,而java设计者也只能是让指针在java语言中变得更加简单、易用,而不能完全的将其剔除,所以才有了我们日常所见到的关键字 null 。 空指针异常是一个运行时异常,对于这一类异常,如果没有明确的处理策略,那么最佳实践在于让程序早点挂掉,但是很多场景下,不是开发人员没有具体的处理策略,而是根本没有意识到空指针异常的存在。当异常真的发生的时候,处理策略也很简单,在存在异常的地方添加一个if语句判定即可,但是这样的应对策略会让我们的程序出现越来越多的null判定,我们知道一个良好的程序设计,应该让代码中尽量少出现null关键字,而java8所提供的 Optional 类则在减少NullPointException的同时,也提升了代码的美观度。但首先我们需要明确的是,它并 不是对 null 关键字的一种替代,而是对于null判定提供了一种更加优雅的实现,从而避免NullPointException 。 一. 直观感受 假设我们需要返回一个字符串的长度,如果不借助第三方工具类,我们需要调用 str.length() 方法: if(null == str) { // 空指针判定 return 0; } return str

枚举类

99封情书 提交于 2019-11-27 21:58:36
什么是枚举?java中枚举如何定义 枚举是将变量的值一一列举出来,变量的值只限定于列举出来的值,java中的枚举是jdk1.5后引入的,以前通常会在接口中定义静态常量的方式来表示枚举.我们只讨论1.5以后引入的枚举类.下面的例子定义了一个简单的枚举类用于表示四季.定义枚举使用关键字 enum 1 public enum Season { 2 SPRING,SUMMER,AUTUMN,WINTER; 3 } 可以看出,定义一个枚举类是非常容易的,只需要将枚举常量的名称一一列举出来,并用逗号分隔如果不添加任何方法,枚举的默认值是从0开始的有序数值,也就是说Season的枚举常量依次是SPRING:0,SUMMER:1,AUTUMN:2,WINTER:3. 使用枚举类 1 public class TestEunm { 2 public static void main(String[] args) { 3 // 0. 不能创建枚举类的对象 4 //Season season = new Season(); //编译报错 5 6 7 // 1.直接使用类名.枚举常量名 8 System.out.println(Season.SPRING); //SPRING 9 System.out.println(Season.SUMMER); //SUMMER 10 System.out

Java 集合类详解

一个人想着一个人 提交于 2019-11-27 18:09:06
0.参考文献 http://blog.csdn.net/liulin_good/article/details/6213815 1.java集合类图 1.1 1.2   上述类图中, 实线边框 的是 实现类 ,比如ArrayList,LinkedList,HashMap等, 折线边框 的是 抽象类 ,比如AbstractCollection,AbstractList,AbstractMap等,而 点线边框 的是 接口 ,比如Collection,Iterator,List等。   发现一个特点,上述所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法。它的一个子接口LinkedIterator在它的基础上又添加了三种方法,分别是add(),previous(),hasPrevious()。也就是说如果是先Iterator接口,那么在遍历集合中元素的时候,只能往后遍历,被遍历后的元素不会在遍历到,通常无序集合实现的都是这个接口,比如HashSet,HashMap;而那些元素有序的集合,实现的一般都是LinkedIterator接口,实现这个接口的集合可以双向遍历,既可以通过next()访问下一个元素,又可以通过previous()访问前一个元素,比如ArrayList。  

Configuration类的@Value属性值为null

这一生的挚爱 提交于 2019-11-27 12:50:21
今天写的Configuration类的@Value属性值为null @Configuration public class MybatisConfigurer { @Value("${spring.datasource.url}") private String dbUrl; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.driver-class-name}") private String driverClassName; …… @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");

Java 对象和类

柔情痞子 提交于 2019-11-27 09:35:54
Java作为一种面向对象语言。支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 本节我们重点研究对象和类的概念。 对象 :对象是类的一个实例( 对象不是找个女朋友 ),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 类 :类是一个模板,它描述一类对象的行为和状态。 下图中 男孩(boy) 、 女孩(girl) 为 类(class) ,而具体的每个人为该类的 对象(object) : Java中的对象 现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。 拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。 对比现实对象和软件对象,它们之间十分相似。 软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。 在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。 Java中的类 类可以看成是创建Java对象的模板。 通过下面一个简单的类来理解下Java中类的定义: public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sleeping(){ } }

Path类与Directory类与File类

被刻印的时光 ゝ 提交于 2019-11-27 08:48:48
Path 对路径 字符串进行操作 获得后缀 能合并路径 获取文件名 Directory和DirectoryInfo 对目录进行操作 判断目录是否存在 创建目录 删除目录 获取目录下所有的子目录 获取目录下所有的子文件 File和FileInfo 对文件进行操作 读文件 写文件 追加文件 判断文件是否存在 创建文件 删除文件 1、Path类 View Code using System; using System.IO;//目录和文件操作的名称空间 namespace _11_Path类 { class Program { static void Main(string[] args) { string path = "c:\\abc\\1.txt" ; //注意这里是对路径字符串的操作 而不是真正的文件 “修改”支持字符串层面的,没有真的给文件改名 path = Path.ChangeExtension(path, "avi" );//ChangeExtension()修改文件后缀名1.avi c:\\abc\\1.avi //将两个路径合成一个路径,比用+好,可以方便解决是不是加斜线的问题,自动处理路径分隔符的问题 path = Path.Combine("c:\\abc\\def\\" , "1.jpg"); //c:\abc\def\1.jpg //得到文件所在文件夹的位置

微网站页面的父类

血红的双手。 提交于 2019-11-27 07:07:11
/************************************** * * author:李朴 * company:上海沐雪网络科技有限公司 * website:http://uweixin.cn * createDate:2013-11-1 * update:2014-12-30 * remark:微网站页面的父类 * ***********************************/ using MxWeiXinPF.Common; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespace MxWeiXinPF.Templates { public class TBasePage : System.Web.UI.Page { /// <summary> /// 模版的物理路径 /// </summary> public string tPath { get; set; } /// <summary> /// 首页的模版文件名称 /// </summary> public string

StringBulider类

删除回忆录丶 提交于 2019-11-27 06:02:37
StringBulider类创建的字符串同样可以对字符串进行修改: public class StringBuliderDemo { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); sb.append("1234"); //添加字符串 sb.insert(2, "dont");//在指定位置插入, sb.delete(1, 4);//删除,包含头,不包含尾 sb.replace(1, 4, "not");//替换指定范围内的内容,包含头,不包含尾 String str = sb.toString(); System.out.println(str); System.out.println(sb.reverse());//反转 System.out.println("字符串的长度为:"+sb.length()); } } 来源: https://www.cnblogs.com/zhai1997/p/11348864.html

Java基础之Properties类、Conllections集合工具类

二次信任 提交于 2019-11-27 00:09:00
Properties时Hashtable的子类,主要进行属性的操作,属性的最大特点是利用字符串设置key与value。 public class Properties extends Hashtable<Object,Object>在使用Properties类时,不需要设置泛型 public Object setProperty(String key, String value) public String getProperty(String key)//如果key不存在,返回null public String getProperty(String key, String defaultValue)//如果key不存在,返回默认值 1 Properties properties = new Properties(); 2 properties.setProperty("BJ","北京"); 3 properties.setProperty("SH","上海"); 4 properties.setProperty("SZ","深圳"); 5 try { 6 //使用Properties类,将设置的信息写到指定磁盘文件中 7 properties.store(new FileOutputStream(new File("E:"+File.separator+"area