JAVA语言 获得对象类型

JAVA语言 获得对象类型,第1张

如题:

如果是使用 判断来验证的话 可以 使用

instanceof 关键字来做比较。

在java中 instanceof 归类为 比较运算符(特殊的)

是用来 判断 某个 对象 是否是某个类的实例(所谓的实例 就是指,这个对象 是 由 这个类 或这个类的子类 new 出来的)

如: 你自己定义了一个类 Person类,而你用这个类new(创建) 了一个对象p ( Person p=new Person() ) ,则 这个 时候 boolean flag=p instanceof Person ;

的结果是 true;

注意 instanceof 左边的事对象,右边的事类名。

instanceof 关键字 的用法 基础的就是这样。

当然 如果 你比较的对象 不是 这个类 的实例,则结果当然是false了。

当时,此时 要注意了。

java中的类是可继承的。(在涉及到继承时候 用instanceof 就有意思了,要注意这里的情况)

如:

你写了 一个类 Student 继承了Person 类。

就像这样 class Student extends Person

那么 这个时候

Student 类的实例 如:Student stu=new Student();

此时 如果 你使用 stu instanceof Student ,那么 ,结果 当如是true的。

是吧?这个不会 有疑问吧? 有疑问 的话, 下面的就没法看了。

接着,再看这个:

Student stu1=new Student();

boolean result=stu1 instanceof Person;

那么 result 的结果 是true 还是 false呢?

结果是 true;

这 就是 在继承结构下,instanceof 要注意的地方。

我们 可以这样理解

Person p1=new Person();

p1 instanceof Person ---true ==>人(p1)是(Person)人类的 实例

Student stu2=new Student();

stu2 instanceof Student;---->true; ==>学生(stu2)是学生类(Student)的实例

stu2 instanceof Person --->true ==>学生也是人(继承结构)

补充 :

写的,不正确了。

应该写成

if(某变量 instanceof Integer){

//do some

}else if(某某变量 instanceof Float){

//do some

}

Integer 是int的包装类

Float 是float的包装类

不知 是不是你想要的答案。

package test;

import javabeansIntrospectionException;

import javabeansPropertyDescriptor;

import javalangreflectInvocationTargetException;

import javalangreflectMethod;

import javautilArrayList;

import javautilArrays;

import javautilIterator;

public class AList extends ArrayList<A> {

/

  

 /

private static final long serialVersionUID = -5626405721508120479L;

public A getSubject(String name, Object value)

throws IllegalAccessException, IllegalArgumentException,

InvocationTargetException, IntrospectionException {

A[] result = getSubjects(name, value);

if (resultlength <= 0)

return null;

else

return result[0];

}

public A[] getSubjects(String name, Object value)

throws IntrospectionException, IllegalAccessException,

IllegalArgumentException, InvocationTargetException {

PropertyDescriptor pd = new PropertyDescriptor(name, Aclass);

Method getter = pdgetReadMethod();

Iterator<A> it = thisiterator();

A[] result = new A[0];

while (ithasNext()) {

A obj = itnext();

Object theValue = getterinvoke(obj);

if (theValue != null && theValueequals(value)) {

result = ArrayscopyOf(result, resultlength + 1);

result[resultlength - 1] = obj;

}

}

return result;

}

public static void main(String[] args) throws IllegalAccessException,

IllegalArgumentException, InvocationTargetException,

IntrospectionException {

AList al = new AList();

A a = new A("张三");

asetAge(18);

asetGender("男");

asetSchool("XX大学");

A b = new A("李四");

bsetAge(20);

bsetGender("男");

bsetSchool("XX大学");

A c = new A("王五");

csetAge(18);

csetGender("女");

csetSchool("XX大学");

aladd(a);

aladd(b);

aladd(c);

Systemoutprintln(ArraystoString(algetSubjects("name", "张三")));

Systemoutprintln(ArraystoString(algetSubjects("age", 18)));

Systemoutprintln(ArraystoString(algetSubjects("gender", "男")));

Systemoutprintln(ArraystoString(algetSubjects("school", "XX大学")));

// [A [name=张三, age=18, gender=男]]

// [A [name=张三, age=18, gender=男], A [name=王五, age=18, gender=女]]

// [A [name=张三, age=18, gender=男], A [name=李四, age=20, gender=男]]

// [A [name=张三, age=18, gender=男], A [name=李四, age=20, gender=男], A [name=王五, age=18, gender=女]]

}

}

class A {

private String name;

private int age;

private String gender;

private String school;

public String getSchool() {

return school;

}

public void setSchool(String school) {

thisschool = school;

}

public A(String name) {

super();

thisname = name;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

thisgender = gender;

}

public int getAge() {

return age;

}

public void setAge(int age) {

thisage = age;

}

public String getName() {

return name;

}

public void setName(String name) {

thisname = name;

}

@Override

public String toString() {

return "A [name=" + name + ", age=" + age + ", gender=" + gender + "]";

}

}

不知道你说的“普通的java类”是什么。在spring里要注入的话,相应的类都要纳入spring的管理,对象由spring创建,对象从spring获取。就像你上面的BaseDaoImpl和BaseServiceImpl。

如果UserCarManager也是由spring管理的话,那同样适用@autowired就可以注入。

看你的提问,应该是指没有纳入spring管理的类如何注入spring管理的对象,这种情况可以用srping相关的静态方法达到目的。

比如:

WebApplicationContext webAppContext = WebApplicationContextUtilsgetWebApplicationContext(getServletContext());

BaseDaoImpl baseDao = (BaseDaoImpl) BeanFactoryUtilsbeanOfTypeIncludingAncestors(webAppContext, BaseDaoImplclass);

Java获取request对象

ActionContext ctx = ActionContextgetContext();

>

java是不支持在运行中进行强制转化的! 如果事先知道类型,可以通过强制转化实现! 如果不知道! 可以采用这种方式! \x0d\String className = objgetClass()getName(); 得到类名\x0d\然后:\x0d\A a = (A)ClassforName(className)newInstance(); \x0d\//上面这句话的意思是,forName(className):静态加载className这个类; \x0d\// newInstance(),实例化一个对象\x0d\// A 代表你知道的这人类或者这个类的父类, 把强制转化成你所要的对象。\x0d\这和你 \x0d\A a = new A(); \x0d\是一样的效果!

以上就是关于JAVA语言 获得对象类型全部的内容,包括:JAVA语言 获得对象类型、java根据对象属性从对象列表中取出对象、如何在普通java类中获取spring中定义的对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9487015.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存