通配符

java泛型通配符&lt? extends T&gt和&lt? super T&gt的理解

无人久伴 提交于 2020-02-04 07:07:10
1. 什么是泛型通配? 当使用泛型类或者泛型接口时候,传递数据过程中, 泛型类型不确定 , 则可以通过<?> 来匹配。一旦使用通配符,只能使用Object中共性方法。 2. 使用通配符<?>示例 public class GenericDemo { public static void main ( String [ ] args ) { ArrayList < Integer > list1 = new ArrayList < > ( ) ; list1 . add ( 1 ) ; list1 . add ( 2 ) ; ArrayList < String > list2 = new ArrayList < > ( ) ; list2 . add ( "a" ) ; list2 . add ( "b" ) ; // 调用输出函数,分别想打印结果 printArray ( list1 ) ; printArray ( list2 ) ; } /* 当传入Integer类型,list2将会报错,当传入String类型,list1将会报错 此时,很多会填入Object泛型,但是对不起,泛型没有继承概念 因此我们使用通配符? */ public static void printArray ( ArrayList < ? > list ) { Iterator < ? >

CSS选择器

坚强是说给别人听的谎言 提交于 2020-02-04 02:24:27
CSS三大特性—— 继承、 优先级和层叠。 继承: 即子类元素继承父类的样式; 优先级: 是指不同类别样式的权重比较; 层叠: 是说当数量相同时,通过层叠(后者覆盖前者)的样式。 css选择符分类   首先来看一下css选择符(css选择器)有哪些?   1.标签选择器(如:body,div,p,ul,li)   2.类选择器(如:class="head",class="head_logo")   3.ID选择器(如:id="name",id="name_txt")   4.全局选择器(如:*号)   5.组合选择器(如:.head .head_logo,注意两选择器用空格键分开)   6.后代选择器 (如:#head .nav ul li 从父集到子孙集的选择器)   7.群组选择器 div,span,img {color:Red} 即具有相同样式的标签分组显示   8.继承选择器(如:div p,注意两选择器用空格键分开)   9.伪类选择器(如:就是链接样式,a元素的伪类,4种不同的状态:link、visited、active、hover。)   10.字符串匹配的属性选择符(^ $ *三种,分别对应开始、结尾、包含)   11.子选择器 (如:div>p ,带大于号>)   12.CSS 相邻兄弟选择器器 (如:h1+p,带加号+) css优先级

Struts2 通配符

岁酱吖の 提交于 2020-02-03 04:43:13
通配符的使用 在struts.xml文件中,用来配置action信息 < ! -- 开启动态方法调用 -- > < constant name = "struts.enable.DynamicMethodInvocation" value = "true" / > < package name = "actions" extends = "struts-default" namespace = "/actions" > < ! -- 通配符的命名 -- > < action name = "*_*" class = "com.struts2.action.{1}Action" method = "{2}" > < result > / { 1 } _ { 2 } _success . jsp < / result > < / action > < / package > class中的中的{1}表示name中的第一个*,method中的{2}代表name中的第二个*。url地址传入时,通配符会和url地址匹配,寻找相配的格式*_*。匹配好了之后就会按序号填写到action属性中,然后struts2调用该action。 index.jsp < body > 使用通配符,将配置量降到最低 不过,一定要遵循“约定优先配置”的原则,一个好的命名规范可以拥有简单的配置 < br / > <

mysql之用通配符进行数据过滤

▼魔方 西西 提交于 2020-02-03 00:43:52
1.用like操作符 1.1百分号( % )通配符 最常使用的通配符是百分号( % )。在搜索串中, % 表示 任何字符出现 任意次数 。 如: select img from h_info where img like ‘/assets/%’; 通配符可在搜索模式中任意位置使用,并且可以使用多个通配符。下面的例子使用两个通配符,它们位于模式的两端: 如: select img from h_info where img like ‘%/images/%’; 注意:%不能匹配null。 1.2下划线( _ )通配符 另一个有用的通配符是下划线( _ )。下划线的用途与 % 一样,但下划 线只 匹配单个字符而不是多个字符 。 如: select * from h_info where h_title like “台东知_”; 2.使用通配符的技巧 正如所见,MySQL的通配符很有用。但这种功能是有代价的:通配符搜索的处理一般要比前面讨论的其他搜索 所花时间更长 。这里给出一些使用通配符要记住的技巧。  不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。  在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。  仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。 来源:

Java泛型通配符

…衆ロ難τιáo~ 提交于 2020-02-02 19:30:37
class Fruit{} class Apple extends Fruit{} class Plate<T>{ private T item; public Plate(){} public Plate(T t){ item=t; } public void set(T t){ item=t; } public T get(){ return item; } } public class GenericTest { public static void main(String[] args) { Fruit a=new Fruit(); Fruit b=new Apple(); Plate<Fruit> c=new Plate<Fruit>(); //Apple是Fruit的子类,但Plate<Apple>不是Plate<Fruit>的子类 //Plate<Fruit> d=new Plate<Apple>(); //? extends Fruit就代表Fruit或Fruit的子类 Plate<? extends Fruit> e=new Plate<Apple>(); Plate<? extends Fruit> f=new Plate<>(); //无法set/add,类型不匹配,编译器不知道具体是在处理哪个子类。 //e.set(new Fruit()); //e.set

Java----泛型

元气小坏坏 提交于 2020-02-01 03:11:25
##泛型 1、泛型定义及好处 Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常. 泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型 /*创建集合,使用泛型* 好处:1、避免了类型转换的麻烦,存储什么类型,取出什么类型* 2、把运行期异常(代码运行之后会抛出的异常),提升到了编译期(写代码的时候会报错)** 弊端:泛型是什么类型,就只能存储什么类型的数据** */泛型好处与坏处代码示例: package Collection.FanXing.demo01; import java.util.ArrayList; import java.util.Iterator; public class Demo01Generic { public static void main(String[] args) { demo02(); } /*创建集合,使用泛型 * 好处:1、避免了类型转换的麻烦,存储什么类型,取出什么类型 * 2、把运行期异常(代码运行之后会抛出的异常),提升到了编译期(写代码的时候会报错) * * 弊端:泛型是什么类型,就只能存储什么类型的数据 * * */ private static void demo02() { ArrayList<String> list = new

JAVA 系列——>泛型

时间秒杀一切 提交于 2020-02-01 02:24:39
在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升 成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200112143324393.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE2Mzk3NjUz,size_16,color_FFFFFF,t_70) 程序在运行时发生了问题java.lang.ClassCastException。 为什么会发生类型转换异常呢? 我们来分析下:由于 集合中什么类型的元素都可以存储。导致取出时强转引发运行时 ClassCastException。 怎么来解决这个问题呢? Collection虽然可以存储各种对象,但实际上通常Collection只存储同一类型对象。例如都是存储字符串对象。因此 在JDK5之后,新增了泛型(Generic)语法,让你在设计API时可以指定类或方法支持泛型,这样我们使用API的时候 也变得更为简洁,并得到了编译时期的语法检查。 **泛型:**可以在类或方法中预支地使用未知的类型。

查找命令之find 与 grep

痞子三分冷 提交于 2020-01-31 17:40:58
一、Find(查找文件或目录) 1.在/var/lib目录下查找所有文件其所有者是root用户的文件。 find /var/lib -user root 2.查找家目录其所有者不是linux用户,并用长格式显示(如ls –l 的显示结果)。 把前面的结果当成是后面的命令中的 { } 的输入,然后执行并输出到屏幕 sudo find ~ ! -user linux -exec ls -l { } \ ; 2.1、查找文件然后复制到/tmp目录下 find /var/lib -user root -exec cp -r { } /tmp \ ; 3.查找某一目录下名字是*.txt的文件 find /home -name "*.txt" -type f 3.1、查找某一目录下名字是*.txt的目录 find /home -name "*.txt" -type d 4.当前目录查找30天以前的文件 find . -name "*.txt" -type f mtime +30 4.14.当前目录查找1天以内的文件 find . -name "*.txt" -type f mtime -1 5.查找大于5M的文件 M是大写,k是小写,才能识别 find . -name "*.txt" -type f mtime -1 -size 5M 6.查找权限是644的文件 文件默认权限666,目录777

LeetCode-Greedy-44-H:通配符匹配

情到浓时终转凉″ 提交于 2020-01-31 10:45:11
文章目录 思路 解法 给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘ ’ 的通配符匹配。 ‘?’ 可以匹配任何单个字符。 ' ’ 可以匹配任意字符串(包括空字符串)。 两个字符串完全匹配才算匹配成功。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。 思路 wait 解法 来源: CSDN 作者: Heroin X 链接: https://blog.csdn.net/Xjheroin/article/details/104121194

关于java限定符上界和下界

 ̄綄美尐妖づ 提交于 2020-01-31 06:53:32
为什么要有这个 在java中 //经理是员工的子类 Pair < Employee > e = new Pair < Manager > ( ) ; 上述代码报错 尽管在语义上没什么问题 既然限制放员工 我放的是经理 经理是员工的子类 不也是员工吗 报什么错啊 如果想让这个等式成立 就需要使用通配符类型 通配符类型 (Pair<? extends Employee> p) 表示任何泛型Pair类型,它的类型参数是Employee的子类 这里同样也支持Employee 也就是说?表示的是Employee或者它的子类 //属性的声明 public class Pair < T > { private T first ; private T second ; public Pair ( T first , T second ) { this . first = first ; this . second = second ; } public T getFirst ( ) { return first ; } public T getSecond ( ) { return second ; } public void setFirst ( T newValue ) { first = newValue ; } public void setSecond ( T newValue ) {