gpt4 book ai didi

java - 为什么我不能有一个只有字母大小写不同的 java 类名和接口(interface)名?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:34 25 4
gpt4 key购买 nike

我创建了一个名为 CAR,还创建了一个名为car接口(interface)

它们都在同一个源文件中。我让 CAR 类实现了 car 接口(interface),IDE 没有显示任何错误。但是当我运行这个程序时,它给出了一个错误

Exception in thread "main" java.lang.NoClassDefFoundError: test/car (wrong name: test/CAR)"

这是为什么呢? JAVA是不区分大小写的吧?

代码如下:

package test;

interface car {
void changespeed(int x);
void changeoil(int x);
}

class CAR implements car {
private int speed;
private int oil;
public CAR(int _speed,int _oil) {
speed = _speed;
oil = _oil;
}
public void changespeed(int x) {
speed = x;
}
public void changeoil(int x) {
oil = x;
}
public void Show() {
System.out.printf(speed + " " + oil);
}
}
public class test {
public static void main (String[] args) {
CAR a = new CAR(100,200);
a.changespeed(200);
a.changeoil(200);
a.Show();
}
}

最佳答案

从技术上讲,您可以在某些平台上执行此操作。

  • 它将在 Linux/UNIX 上运行
  • 它可能会在 Mac OSX 上运行,但您可能需要进行一些调整以关闭“用户友好”的大小写不敏感。

但是,让您的代码库依赖于平台执行区分大小写的路径名查找的能力并不是一个好主意。忽略明确指出的 Java 样式约定也是一个坏主意:

  • 您不应定义仅大小写不同的同类标识符,
  • 类名应该总是以大写字母开头,并且
  • 所有大写都保留给常量。

问题在于,用于查找类所在文件的标准 Java 机制依赖于能够将类名映射到文件名,假设文件名区分大小写。如果您遵循 Java 风格指南,该机制适用于所有平台。如果您(故意)不这样做,您将陷入一个痛苦的世界……并且您不会得到太多同情。

(但是,如果您设法将已编译的类放入一个 JAR 文件中,并使用正确的类名大小写,那么即使在 Windows 上也应该可以工作。虽然不确定这样做的好方法......如果您正在构建在 Windows 上。)


所以,回答你的问题:

why can't i use similar word as java class name and interface name which just case differs?

因为您使用的是 Windows,并且因为您忽略了 Java 样式规则。

JAVA is not case sensitive, is it?

是的。


我还应该指出 Show() 是一种风格违规,changespeed(...)changeoil(...) _speed,以及 _oil

如果您正在编写只有您自己会阅读的代码,那么您(大部分)可以忽略样式。但是,如果您编写的代码其他人将会/可能不得不阅读,那么您很可能会受到很多批评。

关于java - 为什么我不能有一个只有字母大小写不同的 java 类名和接口(interface)名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40143904/

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