JAVA,
分享于 点击 478 次 点评:16
JAVA,
1. class Point<T>{ // 此处可以随便写标识符号,T是type的简称2. private T var ; // var的类型由T指定,即:由外部指定
3. public T getVar(){ // 返回值的类型由外部决定
4. return var ;
5. }
6. public void setVar(T var){ // 设置的类型也由外部决定
7. this.var = var ;
8. }
9. };
10. public class GenericsDemo06{
11. public static void main(String args[]){
12. Point<String> p = new Point<String>() ; // 里面的var类型为String类型
13. p.setVar("it") ; // 设置字符串
14. System.out.println(p.getVar().length()) ; // 取得字符串的长度
15. }
16. };
17. ----------------------------------------------------------
18. class Notepad<K,V>{ // 此处指定了两个泛型类型
19. private K key ; // 此变量的类型由外部决定
20. private V value ; // 此变量的类型由外部决定
21. public K getKey(){
22. return this.key ;
23. }
24. public V getValue(){
25. return this.value ;
26. }
27. public void setKey(K key){
28. this.key = key ;
29. }
30. public void setValue(V value){
31. this.value = value ;
32. }
33. };
34. public class GenericsDemo09{
35. public static void main(String args[]){
36. Notepad<String,Integer> t = null ; // 定义两个泛型类型的对象
37. t = new Notepad<String,Integer>() ; // 里面的key为String,value为Integer
38. t.setKey("汤姆") ; // 设置第一个内容
39. t.setValue(20) ; // 设置第二个内容
40. System.out.print("姓名;" + t.getKey()) ; // 取得信息
41. System.out.print(",年龄;" + t.getValue()) ; // 取得信息
42.
43. }
44. };
通配符
Java代码
1. class Info<T>{
2. private T var ; // 定义泛型变量
3. public void setVar(T var){
4. this.var = var ;
5. }
6. public T getVar(){
7. return this.var ;
8. }
9. public String toString(){ // 直接打印
10. return this.var.toString() ;
11. }
12. };
13. public class GenericsDemo14{
14. public static void main(String args[]){
15. Info<String> i = new Info<String>() ; // 使用String为泛型类型
16. i.setVar("it") ; // 设置内容
17. fun(i) ;
18. }
19. public static void fun(Info<?> temp){ // 可以接收任意的泛型对象
20. System.out.println("内容:" + temp) ;
21. }
22. };
受限泛型
Java代码
1. class Info<T>{
2. private T var ; // 定义泛型变量
3. public void setVar(T var){
4. this.var = var ;
5. }
6. public T getVar(){
7. return this.var ;
8. }
9. public String toString(){ // 直接打印
10. return this.var.toString() ;
11. }
12. };
13. public class GenericsDemo17{
14. public static void main(String args[]){
15. Info<Integer> i1 = new Info<Integer>() ; // 声明Integer的泛型对象
16. Info<Float> i2 = new Info<Float>() ; // 声明Float的泛型对象
17. i1.setVar(30) ; // 设置整数,自动装箱
18. i2.setVar(30.1f) ; // 设置小数,自动装箱
19. fun(i1) ;
20. fun(i2) ;
21. }
22. public static void fun(Info<? extends Number> temp){ // 只能接收Number及其Number的子类
23. System.out.print(temp + "、") ;
24. }
25. };
26. ----------------------------------------------------------
27. class Info<T>{
28. private T var ; // 定义泛型变量
29. public void setVar(T var){
30. this.var = var ;
31. }
32. public T getVar(){
33. return this.var ;
34. }
35. public String toString(){ // 直接打印
36. return this.var.toString() ;
37. }
38. };
39. public class GenericsDemo21{
40. public static void main(String args[]){
41. Info<String> i1 = new Info<String>() ; // 声明String的泛型对象
42. Info<Object> i2 = new Info<Object>() ; // 声明Object的泛型对象
43. i1.setVar("hello") ;
44. i2.setVar(new Object()) ;
45. fun(i1) ;
46. fun(i2) ;
47. }
48. public static void fun(Info<? super String> temp){ // 只能接收String或Object类型的泛型
49. System.out.print(temp + "、") ;
50. }
51. };
泛型无法向上转型
Java代码
1. class Info<T>{
2. private T var ; // 定义泛型变量
3. public void setVar(T var){
4. this.var = var ;
5. }
6. public T getVar(){
7. return this.var ;
8. }
9. public String toString(){ // 直接打印
10. return this.var.toString() ;
11. }
12. };
13. public class GenericsDemo23{
14. public static void main(String args[]){
15. Info<String> i1 = new Info<String>() ; // 泛型类型为String
16. Info<Object> i2 = null ;
17. i2 = i1 ; //这句会出错 incompatible types
18. }
19. };
相关文章
- 暂无相关文章
用户点评