我是靠谱客的博主 迅速小土豆,最近开发中收集的这篇文章主要介绍java如何获取值,如何获取值的类型(Java),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

The solutions I've seen online make sense; if you know the type of the variable, then you know the type of its value. Java makes it that way; however, if I have a system of inherited classes such as this ...

DynastyPQ (base class)

FirstPQ (inherited class)

And create the objects in this manner ...

DynastyPQ pq = new FirstPQ();

Is there a way to get the type of FirstPQ so that I can use it in a cast so that I can access the class's exclusive methods? Maybe something akin to this?

(typeof(pq's value)pq).exclusiveMethod()

解决方案

You have a few options.

You could use reflection

You could use instanceof

You could use the visitor pattern

For these examples, we will attempt to find the type of this variable:

Object obj = new TargetType();

We want to see if the object referenced by obj is of type TargetType.

Reflection

There are a couple ways you could do this:

if(obj == TargetType.class) {

//do something

}

The idea behind the code above is that getClass() returns a reference to the Class object used to instantiate that object. You can compare the reference.

if(TargetType.class.isInstance(obj)) {

//do something

}

Class#isInstance checks to see if the object value passed to method is an instance of the class we are calling isInstance on. It will return false if obj null, so no null check is needed. This requires casting to perform operations on the object.

instanceof

This one is simple:

if(obj instanceof TargetType) {

//do something

}

instanceof is part of the language specification. This returns false if obj is null. This requires casting to perform operations on the object.

Visitor Pattern

I have explained this in detail in one of my other answers. You would be in charge of handling null. You should look deeper into the pattern to see if it's right for your situation, as it could be an overkill. This does not require casting.

最后

以上就是迅速小土豆为你收集整理的java如何获取值,如何获取值的类型(Java)的全部内容,希望文章能够帮你解决java如何获取值,如何获取值的类型(Java)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部