Java ÐòÁл¯¼ò½é
Java ¶ÔÏóÐòÁл¯ÊÇ JDK 1.1 ÖÐÒýÈëµÄÒ»×鿪´´ÐÔÌØÐÔÖ®Ò»£¬ÓÃÓÚ×÷ΪһÖÖ½« Java ¶ÔÏóµÄ״̬ת»»Îª×Ö½ÚÊý×飬ÒÔ±ã´æ´¢»ò´«ÊäµÄ»úÖÆ£¬ÒÔºó£¬ÈÔ¿ÉÒÔ½«×Ö½ÚÊý×éת»»»Ø Java ¶ÔÏóÔÓеÄ״̬¡£
ʵ¼ÊÉÏ£¬ÐòÁл¯µÄ˼ÏëÊÇ “¶³½á” ¶ÔÏó״̬£¬´«Êä¶ÔÏó״̬£¨Ð´µ½´ÅÅÌ¡¢Í¨¹ýÍøÂç´«ÊäµÈµÈ£©£¬È»ºó “½â¶³” ״̬£¬ÖØÐ»ñµÃ¿ÉÓÃµÄ Java ¶ÔÏó¡£ËùÓÐÕâЩÊÂÇéµÄ·¢ÉúÓеãÏñÊÇħÊõ£¬ÕâÒª¹é¹¦ÓÚ ObjectInputStream
/ObjectOutputStream
Àà¡¢ÍêÈ«±£ÕæµÄÔªÊý¾ÝÒÔ¼°³ÌÐòÔ±Ô¸ÒâÓà Serializable
±êʶ½Ó¿Ú±ê¼ÇËûÃǵÄÀ࣬´Ó¶ø “²ÎÓë” Õâ¸ö¹ý³Ì¡£
Çåµ¥ 1 ÏÔʾһ¸öʵÏÖ Serializable
µÄ Person
Àà¡£
Çåµ¥ 1. Serializable Person
package com.tedneward;
public class Person
implements java.io.Serializable
{
public Person(String fn, String ln, int a)
{
this.firstName = fn; this.lastName = ln; this.age = a;
}
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public int getAge() { return age; }
publ ......
×÷Õß
Josh Long
ÒëÕß
ËÎçâ
·¢²¼ÓÚ
2010Äê5ÔÂ5ÈÕ ÏÂÎç9ʱ7·Ö
Josh BlochÔÚSun¹«Ë¾¶àÄêΪJavaƽ̨×÷³öÁ˽ܳö¹±Ï×£¨Èç¹ûÄãÓùýJava
Collections¿ò¼Ü¾Í»áÁ˽âÕâÒ»µã£©£¬ÏÖÔÚGoogle¾ÍÖ°£¬ÊÇ»ñ½±Í¼Êé¡¶Effective Java¡·¼°¡¶Effective Java µÚ¶þ°æ
¡·
µÄ×÷Õß¡£×î½üËûÔÚ»ùÓÚWebµÄRed
HatÖмä¼þ2020´ó»áÉÏ×öÁËÒ»³¡Ñݽ²£¬ÆäÖ÷Ö¼ÊǶÔOracleËù¹ÜÀíµÄJavaƽ̨µÄδÀ´±íʾ³öÉóÉ÷ÀÖ¹ÛºÍÓÇÂÇ¡£InfoQ²É·ÃÁËJoshÒÔÁ˽âÆäÔÚ
Õâ·½ÃæµÄ¸ü¶àÏë·¨¡£ÒòΪÓÐÐí¶à²»Í¬µÄ¡¢ÏÖʵµÄ¹Ûµã½»Ö¯ÔÚÒ»Æð£¬Õâ´ÎÌÖÂÛ£¨ÓÈÆä¿¼Âǵ½SunÈ˲ŴÓOralceÁ÷ʧÈÕÒæ¼Ó¾çÒÔ¼°ÎªOracleÈçºÎ¹ÜÀíÉçÇø
ºÍJavaÖÇÁ¦×ʲú¶øµ£ÓÇ£©ÊÇ×î½üÒÔÀ´×îÈÈÁÒµÄÒ»´Î¡£ÎÒÃǺܸßÐËÄÜÓëBlochÒ»ÆðÌÖÂÛÕâЩÎÊÌâ¡£
InfoQ£ºÄã×î¹ØÇеÄÊÇʲô£¿
Õâ²»ÊǸöµ¥Ñ¡Ì⣬¹ýÈ¥¼¸ÄêÓкܶàÒòËØ¾À²øÔÚÒ»Æð£¬µ¼ÖÂÁËJava·çÏò·¢ÉúÁ˱仯¡£
InfoQ£ºÎªÊ²Ã´Äã»á¾õµÃJavaµÄ·¢Õ¹²½·¥ÂýÏÂÀ´ÁË£¿
Sun/Apache¾À·×ÒÔ¼°TCKÐí¿ÉȨ֮Õù¶¼ÑÏÖØ¸ÉÈÅÁËJCP¹ý³ÌÔË×÷¡£
SunÖ§³ÖÁ¦¡¢Áìµ¼Á¦ºÍ͸Ã÷¶ÈµÄȱ·¦Ê¹µÃJava 7·¢Õ¹»ºÂý¡£ÎÒ²»ÖªµÀÔÚ¹ýÈ¥¼¸ÄêÀïSun·ÖÅ䏸Java
SE ......
1£®toString£¨£©·½·¨
ObjectÀà¾ßÓÐÒ»¸ötoString()·½·¨£¬Äã´´½¨µÄÿ¸öÀà¶¼»á¼Ì³Ð¸Ã·½·¨¡£Ëü·µ»Ø¶ÔÏóµÄÒ»¸öString±íʾ£¬²¢ÇÒ¶ÔÓÚµ÷ÊԷdz£ÓаïÖú¡£È»¶ø¶ÔÓÚĬÈϵÄtoString()·½·¨ÍùÍù²»ÄÜÂú×ãÐèÇó£¬ÐèÒª¸²¸ÇÕâ¸ö·½·¨¡£
toString£¨£©·½·¨½«¶ÔÏóת»»Îª×Ö·û´®¡£¿´ÒÔÏ´úÂ룺
package sample;
class Villain {
private String name;
protected void set(String nm) {
name = nm;
}
public Villain(String name) {
this.name = name;
}
public String toString() {
return "I'm a Villain and my name is " + name;
}
}
public class Orc extends Villain {
private int orcNumber;
public Orc(String name, int orcNumber) {
super(name);
this.orcNumber = orcNumber;
&nb ......
ÔÚʹÓà Java™ ÓïÑԵķºÐÍʱ£¬Í¨Åä·û·Ç³£ÁîÈËÀ§»ó£¬²¢ÇÒ×î³£¼ûµÄÒ»¸ö´íÎó¾ÍÊÇÔÚʹÓÃÓнçͨÅä·ûµÄÁ½ÖÖÐÎʽµÄÆäÖÐÖ®Ò»£¨“? super T” ºÍ “? extends T”£©Ê±³öÏÖ´íÎó¡£Äú³ö´íÁËÂ𣿱ð¾ÚÉ¥£¬¼´Ê¹ÊÇר¼ÒÒ²»á·¸ÕâÖÖ´íÎ󣬱¾Ô Brian Goetz ½«Õ¹Ê¾ÈçºÎ±ÜÃâÕâ¸ö´íÎó¡£
ÔÚ Java ÓïÑÔÖУ¬Êý×éÊÇбäµÄ£¨ÒòΪһ¸ö Integer ͬʱҲÊÇÒ»¸ö Number£¬Ò»¸ö Integer Êý×éͬʱҲÊÇÒ»¸ö Number Êý×飩£¬µ«ÊÇ·ºÐͲ»ÊÇÕâÑùµÄ£¨List<Integer> ²¢²»µÈÓÚ List<Number>£©¡£ÈËÃÇ»áÕùÂÛÄÄЩѡÔñÊÇ “ÕýÈ·µÄ”£¬ÄÄЩѡÔñÊÇ “´íÎóµÄ” — µ±È»£¬Ã¿ÖÖÑ¡Ôñ¶¼¸÷ÓÐÓÅȱµã — µ«ÓÐÒ»µãºÁÎÞÒÉÎÊ£¬´æÔÚÁ½ÖÖʹÓòî±ðºÜСµÄÓïÒå¹¹ÔìÅÉÉúÀàÐ͵ÄÀàËÆ»úÖÆ£¬Õ⽫µ¼Ö´óÁ¿´íÎóºÍÎó½â¡£
ÓнçͨÅä·û£¨Ò»Ð©ÓÐȤµÄ “? extends T” ͨÓÃÀàÐÍ˵Ã÷·û£©ÊÇÓïÑÔÌṩµÄÒ»ÖÖ¹¤¾ß£¬ÓÃÀ´´¦ÀíбäÐÔȱ·¦ — ÓнçͨÅä·ûÔÊÐíÀàÉùÃ÷·½·¨²ÎÊý»ò·µ»ØÖµºÎʱ¾ßÓÐбäÐÔ£¨»òÏà·´£¬ÉùÃ÷·½·¨²ÎÊý»ò·µ»ØÖµºÎʱ¾ßÓÐÄæ±äÐÔ£¨contravariant£©£©¡£ËäÈ»Á˽âºÎʱʹÓÃÓнçͨÅä·ûÊÇ·ºÐͽÏΪ¸´Ôӵķ½Ã棬µ«ÊÇ£¬Ê¹ÓÃÓнçͨÅä·ûµÄѹÁ¦Í¨³£¶¼ÂäÔÚ¿â×÷ÕßµÄÉíÉÏ£¬¶ø·Ç¿âÓ ......
µ¥Ôª²âÊÔ
1.
DBUnit
DBunitÊÇÒ»¸ö»ùÓÚjunitÀ©Õ¹µÄÊý¾Ý¿â²âÊÔ¿ò¼Ü¡£ËüÌṩÁË´óÁ¿µÄÀà¶ÔÓëÊý¾Ý¿âÏà¹ØµÄ²Ù×÷½øÐÐÁ˳éÏóºÍ·â×°¡£
2.MOckito
MockitoÊÇÒ»¸öÕë¶ÔJavaµÄmocking¿ò¼Ü¡£Äã¿ÉÒÔʹÓüò½àµÄAPI±àд³öƯÁÁµÄ²âÊÔ¡£
3.Hamcrest Matchers
Hamcrest ÊÇÒ»¸ö²âÊÔ¸¨Öú¹¤¾ß£¬ÌṩÁËÒ»Ì×ͨÓÃµÄÆ¥Åä·û Matcher£¬Áé»îʹÓÃÕâЩƥÅä·û¶¨ÒåµÄ¹æÔò£¬³ÌÐòÔ±¿ÉÒÔ¸ü¼Ó¾«È·µÄ±í´ï×Ô¼ºµÄ²âÊÔ˼Ï룬ָ¶¨ËùÏëÉ趨µÄ²âÊÔÌõ¼þ¡£
Junit4½áºÏHamcrestÌṩÁËеĶÏÑÔÓï¾ä-assertThat£¬Ö»ÐèÒ»¸öassertThatÓï¾ä£¬½áºÏHamcrestÌṩµÄÆ¥Åä·û£¬¾Í¿ÉÒÔ±í´ïÈ«²¿µÄ²âÊÔ˼Ïë¡£
Apache Commons
4.Configuration
Õâ¸ö¹¤¾ßÊÇÓÃÀ´°ïÖú´¦ÀíÅäÖÃÎļþµÄ£¬Ö§³ÖºÜ¶àÖÖ´æ´¢·½Ê½
5.DbUtils
DbUtils¿ÉÒÔ½«Êý¾Ý¿â²Ù×÷µ¥¶À×ö³ÉÒ»¸ö°ü£¬¼ò»¯Êý¾Ý¿â²Ù×÷¡£
6.IO
¿ÉÒÔ¿´³ÉÊÇjava.ioµÄÀ©Õ¹¡£ËüÌṩÁËÎļþÔĶÁ¹¦ÄÜ£¬ÒÔ¼°Ò»Ð©Ê¹Óõķ½·¨£¬ÀàËÆÓÚDbUtils¡£
7.Lang
Èç¹ûÄãÒªÎÊÎÒ»¹ÓÐÄĸö¿âÒ»»áÔÚ´ËÃûµ¥Ö®ÉÏ£¬ÎÒ»á¸æËßÄãÊÇLang»òÕßgoogle
Collections¡£lang¿ÉÒÔ¿´³ÉÊǶÔjava.langµÄÀ©Õ¹£¬ÌṩÁËÖîÈçStringUtils, StringEscapeUtils,
RandomStringUtils, Tokenizer, WordUtilsµÈ¹¤¾ßÀà¡£
ºóÆðÖ®Ðã
8.SLF4J
SLF4JÊÇÎ ......
package test;
import java.util.ArrayList;
import java.util.List;
import org.nuxeo.common.xmap.annotation.XNode;
import org.nuxeo.common.xmap.annotation.XNodeList;
import org.nuxeo.common.xmap.annotation.XObject;
/**
* Book ʵÌå¶ÔÏ󣬴˴¦ÓÃXMap×¢½â
* @author Administrator
*
*/
@XObject
public class Book {
@XNode("title")
private String title;
@XNode("@no")
private String no;
@XNodeList(value = "subject", type = ArrayList.class, componentType = String.class)
private List<String> subjects;
@XNode("price")
private int price;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<String> getSubjects() {
return subjects;
}
public void setSubjects(List<String> subjects) {
this.subjects = subj ......
package test;
import java.util.ArrayList;
import java.util.List;
import org.nuxeo.common.xmap.annotation.XNode;
import org.nuxeo.common.xmap.annotation.XNodeList;
import org.nuxeo.common.xmap.annotation.XObject;
/**
* Book ʵÌå¶ÔÏ󣬴˴¦ÓÃXMap×¢½â
* @author Administrator
*
*/
@XObject
public class Book {
@XNode("title")
private String title;
@XNode("@no")
private String no;
@XNodeList(value = "subject", type = ArrayList.class, componentType = String.class)
private List<String> subjects;
@XNode("price")
private int price;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<String> getSubjects() {
return subjects;
}
public void setSubjects(List<String> subjects) {
this.subjects = subj ......