泛型类、多参数泛型类、泛型接口(2)、静态非静态泛型函数、泛型绑定类
来源:互联网 发布:sql server 分组 编辑:程序博客网 时间:2024/06/07 02:01
转自 harvic慢跑的乌龟 http://blog.csdn.net/harvic880925/article/details/49872903
Point
package com.example.genericdemo;/** * 1、泛型类 你传进去的是什么,T就代表什么类型 */class Point<T> {// 此处可以随便写标识符号private T x;private T y;public void setX(T x) {// 作为参数this.x = x;}public void setY(T y) {this.y = y;}public T getX() {// 作为返回值return this.x;}public T getY() {return this.y;}}/** * 2、多参数泛型类 */class MorePoint<T, U> {private T x;private U name;public void setX(T x) {this.x = x;}public T getX() {return this.x;}public void setName(U name) {this.name = name;}public U getName() {return this.name;}}/** * 3、1泛型接口 */interface Info<T> { // 在接口上定义泛型public T getVar(); // 定义抽象方法,抽象方法的返回值就是泛型类型public void setVar(T var);}class InfoImpl<T> implements Info<T> { // 定义泛型接口的子类private T var; // 定义属性public InfoImpl(T var) { // 通过构造方法设置属性内容this.setVar(var);}public void setVar(T var) {this.var = var;}public T getVar() {return this.var;}}/** * 3、2泛型接口 */class InfoImpl1 implements Info<String> { // 定义泛型接口的子类private String var; // 定义属性public InfoImpl1(String var) { // 通过构造方法设置属性内容this.setVar(var);}@Overridepublic void setVar(String var) {this.var = var;}@Overridepublic String getVar() {return this.var;}}
Fruit
package com.example.genericdemo;/** * 4.3泛型绑定类 就可以限定填充的变量必须派生自Fruit的子类 * */class Fruit {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}class Banana extends Fruit {public Banana() {setName("bababa");}}class Apple extends Fruit {public Apple() {setName("apple");}}
MainActivity
package com.example.genericdemo;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/** * 1、泛型类 */Point<Integer> p = new Point<Integer>();p.setX(new Integer(100));Log.e("TAG", "p.getX()==" + p.getX());/** * 2、多参数泛型类 */MorePoint<Integer, String> morePoint = new MorePoint<Integer, String>();morePoint.setName("harvic");morePoint.setX(new Integer(100));Log.e("TAG", "morPont.getName==" + morePoint.getName()+ ",morePoint.getX()==" + morePoint.getX());/** * 3、1泛型接口 */InfoImpl<String> i = new InfoImpl<String>("asffafsfgg");System.out.println(i.getVar());Log.e("TAG", "" + i.getVar());/** * 3.2泛型接口 */InfoImpl1 i1 = new InfoImpl1("sfasfa");Log.e("TAG", "" + i1.getVar());/** * 4.1静态泛型函数,返回值前加上<T>来表示泛型变量 函数里所有用到的T类型也就是强制指定了是String类型 */MainActivity.<String> StaticMethod("AAAAA");MainActivity.StaticMethod("AAAAA");/** * 4.2非静态泛型函数 */MainActivity.this.<Integer> OtherMethod(new Integer(123));MainActivity.this.OtherMethod(new Integer(123));/** * 4.3泛型绑定类 就可以限定填充的变量必须派生自Fruit的子类 */String name_1 = getFruitName(new Banana());String name_2 = getFruitName(new Apple());Log.e("TAG", name_1);Log.e("TAG", name_2);}public static <T extends Fruit> String getFruitName(T t) {return t.getName();}public static <T> void StaticMethod(T a) {Log.e("TAG", "StaticMethod: " + a.toString());}public <T> void OtherMethod(T a) {Log.e("TAG", "OtherMethod: " + a.toString());}}
0 0
- 泛型类、多参数泛型类、泛型接口(2)、静态非静态泛型函数、泛型绑定类
- 泛型方法+反射,解决静态可变类参数问题
- Java面向对象 多态动态绑定(非静态成员函数、成员变量、静态成员函数)
- 静态泛型
- 静态泛型方法
- 类的非静态成员函数做boost::thread参数
- 参数的静态绑定
- 静态函数和非静态函数的区别(静态方法和非静态方法)
- 几个问题(--------)父子类静态变量、静态代码块、非静态代码块、构造函数
- Java基础----Java---集合框架---泛型、泛型方法、静态方法泛型、泛型接口、泛型限定、泛型类
- 函数指针--成员函数(静态,非静态)&普通函数
- Java静态泛型方法
- 静态成员函数如何调用非静态成员变量(函数参数不能任意扩展的情况)
- C++ 缺省参数静态绑定
- 类成员函数参数为该类某个静态成员函数指针,需要在静态函数内使用当前实例的非静态数据成员
- 类中的静态成员函数访问非静态成员变量
- 泛型类的非静态内部类可访问外围类的类型参数
- 静态成员函数调用非静态成员变量(转)
- linux uniq 命令详解
- Http请求报文和响应报文
- Android Log高级用法
- Android自定义轮播图控件
- 帮你快速理解同步 ,异步,并发/并行,串行
- 泛型类、多参数泛型类、泛型接口(2)、静态非静态泛型函数、泛型绑定类
- 浅谈WebLogic和Tomcat
- android studio sonatype nexus aar
- HBase的特征和优点
- Http协议详解
- VS2013使用教程总结(2)---显示行号
- 冒泡排序&选择排序
- 对象池的应用的简单Demo
- Listview列表收缩与展开——ExpandableListView