gpt4 book ai didi

java - 类(class)类型转换出错了?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:41 25 4
gpt4 key购买 nike

好的。我正在为我的 java 程序做一些反射(reflection),但我被困在一个看似简单但不起作用的部分。

这是我正在尝试做的事情:

Thread t = new Thread();
System.out.println("Casting "+Thread.class.getName()+" to "+Runnable.class.getName());
Object newThread = Runnable.class.cast(t);
System.out.println("New class: "+newThread.getClass().getName());

预期的输出是新类:java.lang.Runnable,但是,它返回新类:java.lang.Thread

我做错了什么? (请注意,在这种情况下我不能通过括号使用正常的转换)

最佳答案

您必须了解对象引用类型的转换是什么。像普通类型转换一样,Class's cast method不会改变对象的实际类型。它产生一个引用该对象的适当类型的引用变量,该对象未更改。

Thread t 仍然是一个Thread。 Actor 阵容确实有效,因为Thread implements Runnable ,否则将抛出 ClassCastException。但它仍然是一个线程

关于java - 类(class)类型转换出错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19600059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com