java基础之instanceof的用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010214991/article/details/49000115

转载请注明出处:http://blog.csdn.net/u010214991/article/details/49000115

instanceof是Java的一个二元操作符,和==,>, <是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子: 


String s = "I am an object!"; 
boolean isObject = s instanceof Object; 

我们声明了一个String对象引用,指向一个String对象,然后用instanceof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。 

此外,instanceof可以通过辨别对象所属的类来进行不同的操作,下面通过一个小例子来展示它的用处


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends Activity {

	private Context context;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		context = this;
		Teacher teacher = new Teacher();
		talk(teacher);

	}

	public class People {

		public void say() {

			Toast.makeText(context, "Hello World", Toast.LENGTH_SHORT).show();
		}

	}

	public class Student extends People {

		@Override
		public void say() {
			// TODO Auto-generated method stub

			Toast.makeText(context, "Hello Student", Toast.LENGTH_SHORT).show();
		}

	}

	public class Teacher extends People {

		@Override
		public void say() {
			// TODO Auto-generated method stub

			Toast.makeText(context, "Hello Teacher", Toast.LENGTH_SHORT).show();
		}

	}

	public void talk(People people) {
		if (people instanceof Student) {
			Student student = new Student();
			student.say();
		}

		if (people instanceof Teacher) {
			Teacher teacher = new Teacher();
			teacher.say();
		}
	}
}
上面这个例子非常简单易懂,类Teacher和类Student均继承自类People,在oncreate方法中,无非就是实例化了一个对象,然后通过talk方法传入这个对象来判断当前的这个对象属于哪个类,然后通过对应不同的类进行不同的操作罢了。由于例子中的对象属于Teacher类,很明显会执行talk方法中的第二个if语句,也就是最终会执行
Toast.makeText(context, "Hello Teacher", Toast.LENGTH_SHORT).show()
这句代码了。

猜你喜欢

转载自blog.csdn.net/u010214991/article/details/49000115
今日推荐