有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java奇怪的类型转换((ClassPathXmlApplicationContext)上下文)。close();

我正在学习java和spring,我有以下代码,我不了解类型转换是如何工作的:

public class App {

    public static void main(String[] args) {

        ApplicationContext context = new ClassPathXmlApplicationContext("com/voja/spring/test/beans/beans.xml");

        ((ClassPathXmlApplicationContext) context).close();

    }

}

因此,以下是:

((ClassPathXmlApplicationContext) context).close();

这是我不明白的

我的想法是应该是:

(ClassPathXmlApplicationContext) context.close();

但这是一个错误

它现在的样子就是它应该是什么样子,但我不明白这个方法是如何在它上面被调用的,为什么(ClassPathXmlApplicationContext) context在括号里,再一次,一个方法是如何被附加到它上面的


共 (1) 个答案

  1. # 1 楼答案

    事情是这样的:表达“从右到左”

    所以,当你

    Foo foo = ...
    (X) foo.bar();
    

    编译器假定foo必须属于一个类,该类有一个返回某些内容的bar()方法;返回值应被转换为X

    但是你想把foo转换成X,因为bar()存在于X上,而不是foo上