Java 我在程序中使用名为“String”的类时出错。是否命名冲突?
我是Java新手,试图找出不同的命名冲突场景。 这个程序给了我下面提到的错误Java 我在程序中使用名为“String”的类时出错。是否命名冲突?,java,Java,我是Java新手,试图找出不同的命名冲突场景。 这个程序给了我下面提到的错误 class String { int a=3; } class StringBuffer { int c=5; } public class Test1 { int b=6; public static void main(String[] args) { Test1 obj = new Test1(); String obj2
class String {
int a=3;
}
class StringBuffer {
int c=5;
}
public class Test1 {
int b=6;
public static void main(String[] args)
{
Test1 obj = new Test1();
String obj2 =new String();
StringBuffer obj3 = new StringBuffer();
System.out.println(obj.b);
//System.out.println(obj2.a);
System.out.println(obj3.c);
}
}
错误:在类Test1中找不到Main方法,请将Main方法>定义为:
公共静态无效字符串[]args
或者JavaFX应用程序类必须扩展JavaFX.application.application
我已搜索此错误线程,但无法找出出现此错误的原因。当我注释掉那个字符串类时,我的程序运行良好,并给出输出。我是新手,所以请有人告诉我这是否真的是命名冲突或者这个程序有什么问题
我知道用这样的名字创建类是个坏主意,但作为新手,我这么做只是为了理解命名冲突。我不明白为什么String类给出的是错误,而不是StringBuffer。您的自定义String类隐藏了java.lang.String,所以在
编译器使用自定义字符串类,因此找不到接受java.lang.String[]参数的主方法
你可以把它改成
public static void main(java.lang.String[] args)
但是不定义自己的字符串类更有意义。创建与JDK同名的类是个坏主意。默认情况下,java.lang.*中的类包含在类路径中。最简单的解决方案是重命名String和StringBuffer类。请问String和StringBuffer类的意义是什么?除非你特别想测试你是否可以像现有的那样命名你的自定义类,否则它们似乎没有多大用途,与它们的名称几乎没有关系@CHIVID正在用自己的实现隐藏java.lang.String。执行此操作时,需要完全限定java.lang.StringDon’不要将标准java API类型名称用于自定义类型。谢谢!!这澄清了为什么字符串缓冲区没有给出errorYes!!作为java学习者,我这样做只是为了找出不同的命名冲突。当然,我以后会记住这一点。
public static void main(java.lang.String[] args)