加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

编译时间vs运行时依赖关系 – Java

发布时间:2020-12-14 01:17:54 所属栏目:百科 来源:网络整理
导读:Java中的编译时间和运行时间依赖性有什么区别? 它与类路径相关,但它们如何不同? 编译时依赖:在CLASSPATH中需要依赖关系来编译工件。它们的产生是因为你对你的代码中硬编码的依赖有某种“引用”,例如为某些类调用new,扩展或实现某些东西(直接或间接),
Java中的编译时间和运行时间依赖性有什么区别?
它与类路径相关,但它们如何不同?
>编译时依赖:在CLASSPATH中需要依赖关系来编译工件。它们的产生是因为你对你的代码中硬编码的依赖有某种“引用”,例如为某些类调用new,扩展或实现某些东西(直接或间接),或使用direct reference.method )符号。
>运行时依赖:在CLASSPATH中需要依赖关系来运行工件。它们是因为你执行访问依赖的代码(硬编码或通过反射或其他)。

虽然编译时依赖通常意味着运行时依赖,你可以有一个编译时依赖。这是基于Java只链接类依赖关系首次访问该类的事实,所以如果你从未在运行时访问一个特定的类,因为代码路径永远不会被遍历,Java将忽略类和它的依赖。

这个例子

在C.java(生成C.class):

package dependencies;
public class C { }

在A.java(生成A.class):

package dependencies;
public class A {
    public static class B {
        public String toString() {
            C c = new C();
            return c.toString();
        }
    }
    public static void main(String[] args) {
        if (args.length > 0) {
            B b = new B();
            System.out.println(b.toString());
        }
    }
}

在这种情况下,A对C到B有一个编译时依赖,但是如果你在执行java依赖时传递一些参数,它只对C有运行时依赖.A,因为JVM只会尝试解决B的依赖on C当它执行B b = new B()。此功能允许您在运行时只提供在代码路径中使用的类的依赖关系,并忽略工件中其余类的依赖关系。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读