[转] java 需要传递类对象为参数的时候,几种方法

1、直接

抽象类 对象 = new 抽象类(){

                                        //重写此抽象类的抽象方法

                           };

例子:

复制代码
 private TimerTask t1 = new TimerTask(){
        @Override public void run() { // TODO Auto-generated method stub  //在此实现该抽象方法
        }
        
    };
复制代码

外层

复制代码
public class TimerActivity2 extends Activity { /** Called when the activity is first created. */ public Timer timer = new Timer(); private TimerTask t1 = new TimerTask(){
        @Override public void run() { // TODO Auto-generated method stub  }
        
    };
    @Override public void onCreate(Bundle savedInstanceState) {
..}
}
复制代码

2、抽象类 对象 = new 子类();

      接口/实现类 对象= new 实现类()

  class 子类 extends 抽象类{

//实现此抽象类的抽象方法即可。

}

class 实现类 implements 接口{

//实现此接口的抽象方法即可

}

例子:

复制代码
public class TimerActivity2 extends Activity { /** Called when the activity is first created. */ public Timer timer = new Timer(); private TimerTask tTask = new MyTimerTask();
 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      
    } //子类  class MyTimerTask extends java.util.TimerTask {
        @Override public void run() { // TODO Auto-generated method stub  //在此实现该抽象方法        }
    }
........
.......
}
复制代码

接口时:

复制代码
		
...... //某处 // MySensorEventListener mSensorEventListener; SensorEventListener mSensorEventListener; ..... //某处,定义和赋值可以写在一句话里面 mSensorEventListener = new MySensorEventListener(); ............. ....... //某处 class MySensorEventListener implements SensorEventListener { @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub //在此做方法的实现即可   } }
复制代码

3、直接把对象创建出来,比如在参数中需要用到某个类对象的时候,除了上述方法以外,也可以直接把此对象创建出来。

public void method(class obiect,,);

()中就可以这么写

(new (抽象类/接口(){

//在这实现抽象方法

}))

例子:

    

复制代码
 b1.setOnClickListener(new Button.OnClickListener() {
     
                @Override public void onClick(View arg0) { // 定义计时器  timer = new Timer();
                    timer.schedule(new TimerTask() { // TimerTask 是个抽象类,实现的是Runable类  @Override public void run() {
                         
                        }
     
                    }, 1000, 200);
                }
            }); 
复制代码

 此例子中,

new Button.OnClickListener()是一个接口对象,实现onClick这个接口的抽象方法。记住!不需要这个要让外部activity实现接口。new TimerTask() 是一个抽象类对象,里面也要实现run()这个抽象类的抽象方法。
分类: Android学习