gpt4 book ai didi

Java 指的是 lib java.lang.String 而不是我的 java.lang.String

转载 作者:行者123 更新时间:2023-11-30 07:07:49 25 4
gpt4 key购买 nike

我创建了一个与 String java 类具有相同名称和包的类。

package java.lang;

public class String {

public String() {
System.out.println("This is my string ");
}
public void show() {
System.out.println("From show mathod .");
}
}

当我尝试调用此显示方法时,它给出了没有此类方法的错误。它指的是 API 类。为什么。?

import java.lang.*;

public class Test {
public static void main(String[] args) {

String str = new String();
str.show();
}
}

我知道我违反了唯一包和类名的规则。但是我想知道我是否在我的类路径中添加了两个 jar 并且它们具有相同的结构。在这种情况下,Java 是否定义了将加载哪个类的任何行为。

为什么 java 不加载我的类而不是 Java API 类? (我也用其他 api 定义的类试过这个)

#请不要像我违反规则或变通一样给出答案。

最佳答案

Java 附带类。这些类之一是 java.lang.String。这些预装类在类路径中优先于您可能编写的具有相同包和名称的任何类。

无论何时执行 new java.lang.String(),无论您是否有具有相同包和名称的类,Oracle 提供的运行时类都将优先。

由于 java.lang.String 也是一个最终类,因此您无法向它添加新方法。最好的解决方案是在不同的包中或以不同的名称创建一个新类。

关于Java 指的是 lib java.lang.String 而不是我的 java.lang.String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24546966/

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