/**
* Custom General generic classes
* @ Author Administrator
*
* @ Param <t> generic
*/
// Public class generictest <t> {
// Private t member;
// Public t getmember (){
// Return member;
//}
// Public void setmember (T member ){
// This. Member = member;
//}
//}
Public class person {}
Public class student extends person {}
Public class teacher {}
/**
* Restricted Generic Type
* @ Author Administrator
*
* @ Param <t> generic
*/
Public class generictest <t extends person> {
Private t member;
Public t getmember (){
Return member;
}
Public void setmember (T member ){
This. Member = member;
}
}
/************* Use of common generic classes *****************/
// Public static void main (string [] ARGs ){
// Generictest <string> generic = new generictest <string> ();
// Generic. setmember ("ABC"); // correct. "ABC" indicates that the string matches the generic type.
//// Generic. setmember (100); // error. 100 indicates that the integer does not match the generic type.
//
/// Generictest <int> generic2 = new generictest <int> (); // error. The generic type can only be the reference type, not the original type.
// Generictest <integer> generic2 = new generictest <integer> (); // correct
//
// Generictest <person> generic3 = new generictest <person> (); // correct
// Person P = new person ();
// P. setname ("James ");
// P. setage (23 );
// Generic3.setmember (P );
//}
*****************/
// Public static void main (string [] ARGs ){
// Generictest <student> G1 = new generictest <student> (); // correct, because student inherits the person
// Generictest <teacher> G2 = new generictest <teacher> (); // error because the teacher does not inherit the person
// Generictest <person> G3 = new generictest <person> (); // correct. You can use the parent class itself.
//}
*****************/
// Public static void main (string [] ARGs ){
////? Is a wildcard, representing the type that meets the requirements
// Generictest <? Extends person> G1 = new generictest <student> (); // correct
// Generictest <? Extends person> G2 = new generictest <teacher> (); // Error
// Generictest <? Extends person> G3 = new generictest <person> (); // correct
//
// Generictest <? Super student> G4 = new generictest <person> (); // correct
// Generictest <? Super student> G5 = new generictest <student> (); // correct
// Generictest <? Super student> G6 = new generictest <teacher> (); // Error
//}