锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
The following is a list of the keywords in Java, along with brief descriptions of their functions:[1]
abstract
abstract
keyword is used to declare a class or method to be abstract. An abstract method has no implementation; all classes containing abstract methods must themselves be abstract, although not all abstract classes have abstract methods. Objects of a class which is abstract cannot be instantiated, but can be extended by other classes. All subclasses of an abstract class must either provide implementations for all abstract methods, or must also be abstract.[2] assert
assert
keyword, which was added in J2SE 1.4,[1] is used to make an assertion鈥攁 statement which the programmer believes is always true at that point in the program. If assertions are enabled when the program is run and it turns out that an assertion is false, an AssertionError
is thrown and the program terminates. This keyword is inteded to aid in debugging.[3] boolean
boolean
keyword is used to declare a field that can store a boolean value; that is, either true
or false
.[4] This keyword is also used to declare that a method returns a value of type boolean
.[5] break
byte
byte
keyword is used to declare a field that can store an 8-bit signed integer.[4] This keyword is also used to declare that a method returns a value of type byte
.[5] case
case
keyword is used to create individual cases in a switch statement; see switch
.[6] catch
try
keyword. The code is executed only if the class of the thrown exception is assignment compatible with the exception class declared by the catch
clause. char
char
keyword is used to declare a field that can store a 16-bit Unicode character.[4] This keyword is also used to declare that a method returns a value of type char
.[5] class
Object
. const
const
is not used and has no function.[1] continue
continue
resumes execution at the end of the enclosing labeled loop body. default
default
can optionally be used in a switch statement to label a block of statements to be executed if no case
matches the specified value; see switch
.[6] do
do
keyword is used in conjunction with while
to create a do-while loop, which executes a block of statements assocated with the loop and then tests a boolean expression assocated with the while
. If the expression evaluates to true
, the block is executed again; this continues until the expression evaluates to false
.[7] double
double
keyword is used to declare a field that can hold a 64-bit double precision IEEE 754 floating-point number.[4] This keyword is also used to declare that a method returns a value of type double
.[5] else
else
keyword is used in conjunction with if
to create an if-else statement, which tests a boolean expression; if the expression evaluates to true
, the block of statements associated with the if
are evaluated; if it evaluates to false
, the block of statements associated with the else
are evaluated.[8] enum
(as of J2SE 5.0)
Enum
. extends
final
final
. finally
try
keyword. The finally
block is executed after execution exits the try
block and any associated catch
clauses regardless of whether an exception was thrown or caught, or execution left method in the middle of the try
or catch
blocks using the return
keyword. float
float
keyword is used to declare a field that can hold a 32-bit single precision IEEE 754 floating-point number.[4] This keyword is also used to declare that a method returns a value of type float
.[5] for
for
keyword is used to create a for loop, which specifies a variable initialization, a boolean expression, and an incrementation. The variable initialization is performed first, and then the boolean expression is evaluated. If the expression evaluates to true
, the block of statements assocated with the loop are executed, and then the incrementation is performed. The boolean expression is then evaluated again; this continues until the expression evaluates to false
.[9] for
keyword can also be used to create a so-called "enhanced for loop", which specifies an array or Iterable
object; each iteration of the loop executes the associated block of statements using a different element in the array or Iterable
.[9] goto
goto
is not used and has no function.[1] if
if
keyword is used to create an if statement, which tests a boolean expression; if the expression evaluates to true
, the block of statements associated with the if statement is executed. This keyword can also be used to create an if-else statement; see else
.[8] implements
import
import
statements can import static
members of a class. instanceof
instanceof
operator evaluates to true if and only if the runtime type of the object is assignment compatible with the class or interface. int
int
keyword is used to declare a field that can hold a 32-bit signed two's complement integer.[4] This keyword is also used to declare that a method returns a value of type int
.[5] interface
static final
) fields and static
interfaces. It can later be implemented by classes that declare the interface with the implements
keyword. long
long
keyword is used to declare a field that can hold a 64-bit signed two's complement integer.[4] This keyword is also used to declare that a method returns a value of type long
.[5] native
new
package
package
keyword. private
private
keyword is used in the declaration of a method, field, or inner class; private members can only be accessed by other members of their own class.[10] protected
protected
keyword is used in the declaration of a method, field, or inner class; protected members can only be accessed by members of ther own class or that class's subclasses.[10] public
public
keyword is used in the declaration of a class, method, or field; public classes, methods, and fields can be accessed by the members of any class.[10] return
short
short
keyword is used to declare a field that can hold a 16-bit signed two's complement integer.[4] This keyword is also used to declare that a method returns a value of type short
.[5] static
static
also is used to define a method as a class method. Class methods are bound to the class instead of to a specific instance, and can only operate on class fields. (Classes and interfaces declared as static
members of another class or interface are actually top-level classes and are not inner classes.) strictfp
(as of J2SE 1.2)
super
super
keyword is also used to forward a call from a constructor to a constructor in the superclass.
switch
switch
keyword is used in conjunction with case
and default
to create a switch statement, which evaluates a variable, matches its value to a specific case
, and executes the block of statements associated with that case
. If no case
matches the value, the optional block labelled by default
is executed, if included.[6] synchronized
Class
. Guarantees that at most one thread at a time operating on the same object executes that code. The mutex lock is automatically released when execution exits the synchronized code. Fields, classes and interfaces cannot be declared as synchronized. this
this
can be used to access class members and as a reference to the current instance. The this
keyword is also used to forward a call from one constructor in a class to another constructor in the same class. throw
catch
keyword to handle an assignment compatible exception type. If no such exception handler is found in the current method, then the method returns and the process is repeated in the calling method. If no exception handler is found in any method call on the stack, then the exception is passed to the thread's uncaught exception handler. throws
RuntimeException
must be declared using the throws
keyword. transient
try
try
block, an optional catch
block can handle declared exception types. Also, an optional finally
block can be declared that will be executed when execution exits the try
block and catch
clauses, regardless of whether an exception is thrown or not. A try
block must have at least one catch
clause or a finally
block. void
void
keyword is used to declare that a method does not return any value.[5] volatile
while
while
keyword is used to create a while loop, which tests a boolean expression and executes the block of statements associated with the loop if the expression evaluates to true
; this continues until the expression evaluates to false
. This keyword can also be used to create a do-while loop; see do
.[7] 鍦ㄧ郴緇熷紑鍙戜腑錛屼負(fù)浜嗛檷浣庤﹀悎鎬э紝涓鑸妸璺熸暟鎹簱鏈夊叧鐨勬搷浣滃皝瑁呭湪琚彨鍋欴AO錛圖ao Access Object錛夌殑綾婚噷銆備竴鑸珼AO鐨勫皝瑁呮湁浠ヤ笅鍑犱釜鍘熷垯錛?/p>
1銆佷竴涓〃鎿嶄綔灝佽鎴愪竴涓狣AO銆備緥濡傦細(xì)鎿嶄綔琛║ser鐨凞AO灝佽涓篣serDao.java錛屾搷浣淯serRole鐨凞AO灝佽涓篣serRole.java絳?/p>
2銆佸叿鏈夎壇濂界殑鎺ュ彛瀹氫箟銆備負(fù)浜嗕嬌鐢ㄧ畝鍗曚互鍙?qiáng)涓嶈嚦浜庤閿欒璋冪敤锛孌AO鎺ュ彛蹇呴』鏈夊叿浣撶殑鍨嬪畾涔夈備緥濡傦細(xì)鍙互鐩存帴
User user = userDao.get(userId);鍙栧緱鎸囧畾userId鐨刄ser錛岃屼笉蹇呰繘琛屽己鍒剁被鍨嬭漿鎹?User user = (User)userDao.get(userId); [X]
涓轟簡閬垮厤璇搷浣滐紝userDao.delete(UserRole);搴旇鍦ㄧ紪璇戞湡灝辨姤閿欍?/p>
涓轟簡瀵笵AO榪涜鑹ソ鐨勫皝瑁咃紝JDK1.5涔嬪墠錛孌AO寮鍙戞槸涓涓ぇ閲忛噸澶嶄唬鐮佺殑浣撳姏榪囩▼錛汮DK1.5寮濮嬪紩鍏ヤ簡Generics姒傚康錛屾垜浠彲浠ュ埄鐢↗DK1.5鐨凣enerics鐗規(guī)уぇ澶х畝鍖朌AO寮鍙戙?/p>
Generics姒傚康
Java鐨凣enerics灝辨槸Java鐨勬硾鍨嬶紝綾諱技浜嶤++鐨勬ā鏉挎蹇碉紝Generics浠嬬粛璧鋒潵姣旇緝澶嶆潅錛岀畝鍗曡鏉ワ紝娉涘瀷浠庤璦鐗規(guī)х殑搴曞眰涓婃敮鎸侊紝鍙互璁╀綘涓烘煇浜涚浉浼煎姛鑳藉畾涔変竴涓叿鏈夌粺涓鎺ュ彛鐨勯氱敤妯℃澘錛岃妯℃澘鍙互鎺ユ敹浠繪剰綾誨瀷騫跺簲鐢ㄥ埌綾繪垚鍛樺彉閲忕殑綾誨瀷錛屾柟娉曠殑鍙傛暟綾誨瀷錛屾柟娉曠殑榪斿洖鍊肩被鍨嬬瓑錛涘茍鍙互鍦ㄧ紪璇戞湡鏀寔綾誨瀷鐨勫畨鍏ㄨ漿鎹€備婦渚嬭錛?br /> java.util.List鏄竴涓硾鍨嬶紝涓涓畾涔変負(fù)List<User> userList;鐨勫彉閲弖serList錛屽彲浠ラ氳繃User user = userList.get(0);渚垮彲鐩存帴寰楀埌User錛屼笉鐢ㄧ粡榪囩被鍨嬬殑寮哄埗杞崲浜嗐?/p>
Generics鏇磋緇嗙殑浠嬬粛璇峰弬鑰冪浉鍏蟲枃绔狅紝榪欓噷涓嶅仛璇﹁堪銆?/p>
涓嬮潰涓句緥鎴戜滑緇欏嚭2縐岲AO鐨勫皝瑁呮柟娉曪紝涓縐嶆槸涓嶄嬌鐢↗ava Generics鐗規(guī)х殑涓鑸皝瑁呮柟娉曪紱涓縐嶆槸浣跨敤娉涘瀷鐨勫皝瑁呮柟娉曘傞氳繃姣旇緝錛屾垜浠細(xì)鍙戠幇Java鐨凣enerics鐗規(guī)у埌搴曚負(fù)鎴戜滑綆鍖栦簡鍝簺宸ヤ綔銆?/p>
鏂囦歡鍚?/th> | 璇存槑 |
---|---|
IDao.java | dao鐨勯《灞傛娊璞℃帴鍙?/td> |
AbstractDao.java | IDao鐨勫疄鐜扮被錛屽疄鐜頒簡get/update/delete絳夊熀鏈搷浣?/td> |
User.java | USER琛ㄥ搴旂殑entity瀹氫箟 |
IUserDao.java | USER琛ㄦ搷浣淒AO鎺ュ彛瀹氫箟 |
UserDao.java | USER琛ㄦ搷浣淒AO瀹炵幇 |
HelloGenerics.java | 嫻嬭瘯綾?/td> |
IDao.java
// super dao interface public interface IDao <T, PK extends Serializable> { public T get(PK pk); public List <T>getAll(); public PK save(T entity); public void update(T entity); public void saveOrUpdate(T entity); public void delete(T entity); } |
AbstractDao.java
//super abstract dao class public abstract class AbstractDao <T, PK extends Serializable>implements IDao<T, PK> { private Class clz; public AbstractDao(Class clz) { this.clz = clz; } public T get(PK pk) { return (T)getSession().get(clz, pk); } public List <T>getAll() { return getSession().createCriteria(clz).list(); } public PK save(T entity) { return (PK)getSession().save(entity); } public void update(T entity) { getSession().update(entity); } public void saveOrUpdate(T entity) { getSession().saveOrUpdate(entity); } public void delete(T entity) { getSession().delete(entity); } private Session session; protected Session getSession() { //wrap session in a class such as HibernateUtils, then you can use HibernateUtils.getCurrentSession() for getting a session. return session; } } |
User.java
//persist entity public class User { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } //... setter/getter HERE } |
IUserDao.java
//User Dao interface public interface IUserDao extends IDao <User, String> { // all are empty } |
UserDao.java
//UserDao Implementation public class UserDao extends AbstractDao <User, String> implements IUserDao { public UserDao() { super(User.class); } // or use the following constructor //public UserDao(Class<User> type) { // super(type); //} } |
HelloGenerics.java
public class HelloGenerics { public static void main(String[] args) { IUserDao userDao = new UserDao(); User user = userDao.get("1"); if (user != null) { System.out.println(user.getName()); } List<User> userList = userDao.getAll(); for (User u:userList) { System.out.println(user.getName()); } } } |
鎴戜滑鍙互鐪嬪埌IUserDao.java涓嶶serDao.java闈炲父綆鍗曘?/p>
鍚屾牱錛屾垜浠粰鍑轟笉浣跨敤Java Generics鐗規(guī)AO鐨勫皝瑁呫傝灝佽涔熸槸涓涓叿鏈夎壇濂界粨鏋勬х殑灝佽銆?/p>
鏂囦歡鍒楄〃2錛?/p>
鏂囦歡鍚?/th> | 璇存槑 |
---|---|
DaoUtils.java | dao閫氱敤宸ュ叿綾伙紝鎻愪緵get/update/delete絳夊熀鏈搷浣?/td> |
User.java | USER琛ㄥ搴旂殑entity瀹氫箟 |
IUserDao.java | USER琛ㄦ搷浣淒AO鎺ュ彛瀹氫箟 |
UserDao.java | USER琛ㄦ搷浣淒AO瀹炵幇 |
HelloGenerics.java | 嫻嬭瘯綾?/td> |
DaoUtils.java
public class DaoUtils { public static Object get(Class clz, Serializable pk) { return getSession().get(clz, pk); } public static List getAll(Class clz) { return getSession().createCriteria(clz).list(); } public static Serializable save(Object entity) { return getSession().save(entity); } public static void update(Object entity) { getSession().update(entity); } public static void saveOrUpdate(Object entity) { getSession().saveOrUpdate(entity); } public static void delete(Object entity) { getSession().delete(entity); } private static Session session; protected static Session getSession() { //wrap session in a class such as HibernateUtils, then you can use HibernateUtils.getCurrentSession() for getting a session. return session; } } |
User.java
//persist entity public class User { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } //... setter/getter HERE } |
IUserDao.java
//User Dao interface public interface IUserDao { public User get(String pk); public List getAll(); public String save(User entity); public void update(User entity); public void saveOrUpdate(User entity); public void delete(User entity); } |
UserDao.java
//UserDao Implementation public class UserDao implements IUserDao { public User get(String pk) { return (User)DaoUtils.get(User.class, pk); } public List getAll() { return DaoUtils.getAll(User.class); } public String save(User entity) { return (String)DaoUtils.save(entity); } public void update(User entity) { DaoUtils.update(entity); } public void saveOrUpdate(User entity) { DaoUtils.saveOrUpdate(entity); } public void delete(User entity) { DaoUtils.delete(entity); } } |
HelloGenerics.java
public class HelloGenerics { public static void main(String[] args) { IUserDao userDao = new UserDao(); User user = userDao.get("1"); if (user != null) { System.out.println(user.getName()); } List<User> userList = userDao.getAll(); for (User u:userList) { System.out.println(user.getName()); } } } |
鎴戜滑娉ㄦ剰鍒癐UserDao.java涓嶶serDao.java鐨勫疄鐜版瘮浣跨敤Java Generics鐗規(guī)х殑鎯呭喌瑕佸鏉傚浜嗐?/p>