java - 转换为接口(interface)类型后确定原始对象类型

标签 java interface casting

我有一个实现接口(interface)的对象。对象被创建,但是被分配了接口(interface)的数据类型,类似于:

List<String> someList = new ArrayList<String>();

在此示例中,ArrayList 被隐式转换为 List 类型。稍后我如何以编程方式确定 List someList 实际上是伪装的 ArrayList

我必须使用 instanceof 和一堆选择语句来确定真实类型吗?或者有没有办法获取原始类型的类名?

希望这是一个很好的例子,实际代码更复杂并且处理自定义数据类型。

最佳答案

是的,您可以获得实际对象的 Class 类型,使用 Object#getClass()方法。

class Parent { }
class Child extends Parent { }

class Main {
    public static void main(String... args) {
        Parent parent = new Child();
        System.out.println(parent.getClass());  // Child.class
    }
}

关于java - 转换为接口(interface)类型后确定原始对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22077950/

相关文章:

java - 数据库的 SQLiteConnection 对象被泄露!请修复您的应用程序

java - 合并多个构建时代码覆盖率错误

java - Jfreechart:如何从图表中排除周末?

c++ - 面试题接口(interface)实现

reflection - Go:检查值的类型是否为函数

java - 对通过values()获得的枚举常量调用函数

java - java 中 JEditorPane 中的语法高亮显示

pointers - 解码嵌套结构和类型断言

python - 为什么 `__subclasshook__` 可以被猴子修补到元类上,而 `__instancecheck__` 不能?

c - 转换时截断结果不同