跟王老师学泛型:泛型的应用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟王老师学泛型:泛型的应用相关的知识,希望对你有一定的参考价值。
泛型的应用
主讲教师:王少华 QQ群:483773664
主讲教师:王少华 QQ群:483773664
一、需求
用户在设计类的时候往往会使用类的关联关系,例如,一个人中可以定义一个信息的属性,但是一个人可能有各种各样的信息(如联系方式、基本信息等),所以此信息属性的类型就可以通过泛型进行声明,然后只要设计相应的信息类即可。
二、参考代码1、接口:Info
12 public interface
Info{
// 只有此接口的子类才是表示人的信息
}
2、联系方式:Contact
123456789101112131415161718192021222324252627282930313233 public
class
Contact
implements
Info{
// 表示联系方式
private
String address ;
// 联系地址
private
String telephone ;
// 联系方式
private
String zipcode ;
// 邮政编码
public
Contact(String address,String telephone,String zipcode){
this
.address = address;
this
.telephone = telephone;
this
.zipcode = zipcode;
}
public
void
setAddress(String address){
this
.address = address ;
}
public
void
setTelephone(String telephone){
this
.telephone = telephone ;
}
public
void
setZipcode(String zipcode){
this
.zipcode = zipcode;
}
public
String getAddress(){
return
this
.address ;
}
public
String getTelephone(){
return
this
.telephone ;
}
public
String getZipcode(){
return
this
.zipcode;
}
@Override
public
String toString() {
return
"Contact [address="
+ address +
", telephone="
+ telephone
+
", zipcode="
+ zipcode +
"]"
;
}
}
3、基本信息:Introduction
123456789101112131415161718192021222324252627282930313233 public
class
Introduction
implements
Info{
private
String name ;
// 姓名
private
String sex ;
// 性别
private
int
age ;
// 年龄
public
Introduction(String name,String sex,
int
age){
this
.name = name;
this
.sex = sex;
this
.age = age;
}
public
void
setName(String name){
this
.name = name ;
}
public
void
setSex(String sex){
this
.sex = sex ;
}
public
void
setAge(
int
age){
this
.age = age ;
}
public
String getName(){
return
this
.name ;
}
public
String getSex(){
return
this
.sex ;
}
public
int
getAge(){
return
this
.age ;
}
@Override
public
String toString() {
return
"Introduction [name="
+ name +
", sex="
+ sex +
", age="
+ age
+
"]"
;
}
}
4、人:Person
12345678910111213141516 public
class
Person<T
extends
Info>{
private
T info ;
public
Person(T info){
// 通过构造方法设置信息属性内容
this
.info = info;
}
public
void
setInfo(T info){
this
.info = info ;
}
public
T getInfo(){
return
info ;
}
@Override
public
String toString() {
return
"Person [info="
+ info +
"]"
;
}
}
5、测试
1234567891011 public
class
GenericPerson{
public
static
void
main(String args[]){
Person<Contact> per =
null
;
// 声明Person对象
per =
new
Person<Contact>(
new
Contact(
"北京市"
,
"01088888888"
,
"102206"
)) ;
System.out.println(per);
Person<Introduction> per2 =
null
;
// 声明Person对象
per2 =
new
Person<Introduction>(
new
Introduction(
"李雷"
,
"男"
,
24
));
System.out.println(per2) ;
}
}
三、学习视频网址:
1 2 | public interface Info{ // 只有此接口的子类才是表示人的信息 } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | public class Contact implements Info{ // 表示联系方式 private String address ; // 联系地址 private String telephone ; // 联系方式 private String zipcode ; // 邮政编码 public Contact(String address,String telephone,String zipcode){ this .address = address; this .telephone = telephone; this .zipcode = zipcode; } public void setAddress(String address){ this .address = address ; } public void setTelephone(String telephone){ this .telephone = telephone ; } public void setZipcode(String zipcode){ this .zipcode = zipcode; } public String getAddress(){ return this .address ; } public String getTelephone(){ return this .telephone ; } public String getZipcode(){ return this .zipcode; } @Override public String toString() { return "Contact [address=" + address + ", telephone=" + telephone + ", zipcode=" + zipcode + "]" ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | public class Introduction implements Info{ private String name ; // 姓名 private String sex ; // 性别 private int age ; // 年龄 public Introduction(String name,String sex, int age){ this .name = name; this .sex = sex; this .age = age; } public void setName(String name){ this .name = name ; } public void setSex(String sex){ this .sex = sex ; } public void setAge( int age){ this .age = age ; } public String getName(){ return this .name ; } public String getSex(){ return this .sex ; } public int getAge(){ return this .age ; } @Override public String toString() { return "Introduction [name=" + name + ", sex=" + sex + ", age=" + age + "]" ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class Person<T extends Info>{ private T info ; public Person(T info){ // 通过构造方法设置信息属性内容 this .info = info; } public void setInfo(T info){ this .info = info ; } public T getInfo(){ return info ; } @Override public String toString() { return "Person [info=" + info + "]" ; } } |
1 2 3 4 5 6 7 8 9 10 11 | public class GenericPerson{ public static void main(String args[]){ Person<Contact> per = null ; // 声明Person对象 per = new Person<Contact>( new Contact( "北京市" , "01088888888" , "102206" )) ; System.out.println(per); Person<Introduction> per2 = null ; // 声明Person对象 per2 = new Person<Introduction>( new Introduction( "李雷" , "男" , 24 )); System.out.println(per2) ; } } |
http://edu.51cto.com/course/course_id-6083.html
以上是关于跟王老师学泛型:泛型的应用的主要内容,如果未能解决你的问题,请参考以下文章