Notepad ++中的多类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Notepad ++中的多类相关的知识,希望对你有一定的参考价值。
所以我不熟悉Notepad ++并在Blue J.中有一个工作程序。我试图将其转移但我继续收到错误:
“Average.java:5:错误:类UserInput是公共的,应该在名为UserInput.java的文件中声明公共类UserInput ^
注意:Average.java使用未经检查或不安全的操作。
注意:使用-Xlint重新编译:取消选中以获取详细信息。 1错误“
我认为这与我编写每个课程的方式有关,但我不确定如何修复它。
文件中只允许一个公共类,它应该与文件具有相同的名称。
第一个解决方案在错误中很好地定义。 “UserInput [...]应该在名为UserInput.java的文件中声明”。 第二种解决方案是改变类的可见性
在A.java
public class A {}
class B{}
protected class C{}
private class D{}
public class E{} //THIS IS NOT ALLOWED, it should be in E.java
请注意,即使只能在文件中定义一个公共类,也不必具有公共类。
X.Java
protected class X{} //this is valid.
但是不要在此文件中添加另一个类作为公共,只有X
可以在X.java
中公开
在Java中,每个java文件只能声明一个公共类。因此,为了快速解决您的问题,您可以简单地将UserInput
类拆分为它自己的文件UserInput.java
,就像那样简单。
虽然有点复杂,但你可以查看Inner Classes
或Local Classes
,这将允许你在一个文件中声明一个额外的类。
读一读
这是一个LocalClass
的例子(代码取自Local Inner Classes Documentation)
public class LocalClassExample {
static String regularExpression = "[^0-9]";
public static void validatePhoneNumber(String phoneNumber1, String phoneNumber2) {
final int numberLength = 10;
// Valid in JDK 8 and later:
// int numberLength = 10;
class PhoneNumber {
String formattedPhoneNumber = null;
PhoneNumber(String phoneNumber) {
// numberLength = 7;
String currentNumber = phoneNumber.replaceAll(
regularExpression, "");
if (currentNumber.length() == numberLength)
formattedPhoneNumber = currentNumber;
else
formattedPhoneNumber = null;
}
public String getNumber() {
return formattedPhoneNumber;
}
// Valid in JDK 8 and later:
// public void printOriginalNumbers() {
// System.out.println("Original numbers are " + phoneNumber1 +
// " and " + phoneNumber2);
// }
}
PhoneNumber myNumber1 = new PhoneNumber(phoneNumber1);
PhoneNumber myNumber2 = new PhoneNumber(phoneNumber2);
// Valid in JDK 8 and later:
// myNumber1.printOriginalNumbers();
if (myNumber1.getNumber() == null)
System.out.println("First number is invalid");
else
System.out.println("First number is " + myNumber1.getNumber());
if (myNumber2.getNumber() == null)
System.out.println("Second number is invalid");
else
System.out.println("Second number is " + myNumber2.getNumber());
}
public static void main(String... args) {
validatePhoneNumber("123-456-7890", "456-7890");
}
}
这段代码会打印出来
First number is 1234567890
Second number is invalid
正如@AxelH所说,对于没有太多知识的人来说这可能有点复杂,但这是一个有趣的小练习。为了更简单,我会推荐给@AxelH答案。
class UserInput是public,应该在名为UserInput.java的文件中声明
我想这个例外是不言自明的。只需将文件名重命名为UserInput.java即可使用!
以上是关于Notepad ++中的多类的主要内容,如果未能解决你的问题,请参考以下文章