当前位置: 首页 > 知识库问答 >
问题:

JAVA不兼容类型:无法将对象转换为我的类型

贺飞
2023-03-14

我试图通过在一个单独的线程上进行工作并返回所需的对象来更改JavaFX中的GUI。然而,在完成工作和任务之后。setOnSucceeded()在尝试检索创建的对象时被触发,并出现错误“不兼容类型:对象无法转换为VideoScrollPane类型”。

我认为这与原始类型有关,因为这是在听众中发生的,但环顾四周后,我找不到我想要的建议。

任何可以散发的光芒都将不胜感激。

Task task = new Task<VideoScrollPane>() {
    VideoScrollPane vsp;
    @Override protected VideoScrollPane call() {
        try {
            System.out.print("thread...");

            ExecutorService executor = Executors.newCachedThreadPool();
            Future<VideoScrollPane> future = executor.submit(new Callable<VideoScrollPane>() {
                @Override public VideoScrollPane call() {
                    return new VideoScrollPane(mediaview, vboxCentre, username, project);
                }
            });

            vsp = future.get();
        } catch(Exception exception) { System.out.println(exception.getMessage()); }

        return vsp;
    }
};
new Thread(task).start();

task.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
    @Override public void handle(WorkerStateEvent t) {
        System.out.println("complete");

        try {

            //where the problem occurs
            VideoScrollPane v = task.get();     

        } catch(Exception exception) { System.out.println(exception.getMessage()); }
    }
});

共有3个答案

许华清
2023-03-14

任务的返回类型。get() 对象而不是视频滚动窗格,将其更改为:

VideoScrollPane v = (VideoScrollPane) task.get();

庾才
2023-03-14

您错误地声明了您的任务。你需要

Task<VideoScrollPane> task = new Task<VideoScrollPane>() { ... }
乐正远
2023-03-14

这是因为任务。get()返回类型为Object的值,但您试图将其分配给v,v是一个视频滚动窗格。您可以通过执行强制转换来防止错误,如下所示

VideoScrollPane v = (VideoScrollPane)task.get();

如果执行任务,请发出警告。get()返回的内容不是VideoScrollPane,您将得到ClassCastException

但是,如果要完全防止问题,请考虑通过使用泛型参数的类型来修复<代码>任务< /代码>的声明。你可以把它改成,

Task<VideoScrollPane> task = new Task<VideoScrollPane>() {

这样,任务。get()现在将返回一个VideoScollPane,您不需要演员阵容。

 类似资料:
  • 问题内容: 我试图通过在单独的线程上进行工作并返回所需的对象来对JavaFX中的GUI进行更改。但是,在完成工作和task.setOnSucceeded()之后,我尝试检索创建的对象并得到错误“不兼容的类型:对象无法转换为VideoScrollPane类型”。 我认为这与原始类型有关,因为它发生在侦听器中,但是四处查看后,我找不到我想要的建议。 任何可以散发出的光将不胜感激。 问题答案: 这是因为

  • 我有一个Java方法,他用来比较数据: 但是对于这行

  • 问题内容: 我试图在我的项目中使用对象数组,但出现错误: 在这条线上: 现在我不知道此错误的原因是什么。请帮我 。 问题答案: 您有两种方法,一种是将每个对象emt1,emt2,..强制转换为String,如下所示: 或者,您应该更改属性的类型: 到弦

  • 我收到一个错误,指出ArrayList不能在我的上转换为int 我正在编写一个程序,在这个程序中,我必须从一个文件中读取所有整数,并计算它们的总和。我还处理所有异常,因此如果抛出异常,函数应该返回0。 这是我的代码: 下面是我的单元测试,读取文件后应该通过: 感谢您的帮助。 谢谢!

  • 问题内容: 一般来说,对于Java和编程,我是一个新手。我正在尝试创建一个简单的程序,您可以在其中猜测我的年龄,如果您是对的,它将说“正确”,如果您错了,它将说“错”。 这是我的代码: 我收到错误消息“不兼容的类型:void无法转换为int”,但代码中没有void类?我知道我的代码可能很糟糕,但是如果你们能为我指出正确的方向,那就太好了。谢谢。 问题答案: 您的程序不必返回in 。相反,您可以将其

  • 我试图编译一个从SourceForge得到的仍在开发中的项目。这是它的地址:。https://sourceforge.net/p/groove/code/5475/tree/groove/trunk/我知道这个项目经过了很好的验证,它没有任何错误,但是当我要编译它的时候,我遇到了这个编译错误: 错误在这个文件的第370行:https://sourceforge.net/p/groove/code/