Tag:

为什么接口是静态的?

为什么我没有内部类的接口? 为什么它们本身就是static ? 对不起,如果这是一个愚蠢的问题,我已经尽力一次又一次谷歌,但我似乎无法将它包裹在我的头脑中。 为什么我不能在内部类/本地类中声明这些? 同样作为确认,我们可以在接口中拥有静态最终变量的原因是因为它们没有指定状态或任何类型的实现权限? 如果我们失去static并且只使用最后一个,我们需要一个没有意义的实例,因为你无法实例化一个接口。 对不起,我真的很困惑,我知道我应该提出另一个问题,但我认为这两个问题有些相关。

具有强制数组大小参数的Java方法?

我想为Java类创建一个初始化方法,它接受3个参数: Employee[] method( String[] employeeNames, Integer[] employeeAges, float[] employeeSalaries ) { Employee myEmployees[] = new Employee[SIZE];// dont know what size is for ( int count = 0; count < SIZE; count++) { myEmployees[count] = new Employee( employeeNames[count], employeeAges[count], employeeSalaries[count] ); } return myEmployees; } 您可能会注意到此代码是错误的。 SIZE变量未定义。 我的问题是我想传入3个数组,但我想知道我是否可以确保三个数组都是相同的数组大小。 这样for循环不会失败,因为for循环中的构造函数使用数组的所有参数。 也许Java有一个不同的function,可以强制解决我的问题。 我可以接受另一个名为SIZE的参数,该参数将在for循环中使用,但如果参数1和2的大小为10且第3个参数是大小为9的数组,则不能解决我的问题。 所以只是为了改变我不清楚。 如何强制执行3个参数是包含完全相同数量元素的所有数组? 使用指定数组大小的额外参数不是很优雅而且很脏。 它也没有解决数组参数包含不同大小的数组的问题。

将java外部类编译为内部类

我需要给websphere一个补丁。 我有一个主要的java类,它有三个内部类。 我对主类的代码更改很少,但对内部类没有任何更改。 现在我的问题是,我是否需要将所有内部类与主类文件一起作为补丁或主类的一部分来充分?

反序列化二进制类文件的内容时ClassNotFoundException

我对Java知之甚少。 我正在尝试读取包含int的文件以及名为“Automobile”的类的各种实例。 但是,当我反序列化它时,程序抛出一个ClassNotFoundException,我似乎无法理解为什么。 这是代码: try { FileInputStream fin = new FileInputStream(inputFile); ObjectInputStream input = new ObjectInputStream(fin); conto = input.readInt(); Automobile[] macchine = new Automobile[conto]; for(int i = 0; i < conto; i++) { macchine[i] = (Automobile)input.readObject(); } String targa; System.out.print("\nInserire le cifre di una targa per rintracciare l'automobile: "); targa = sc1.nextLine(); for(int i = […]

在Java中,为什么超类方法不能从子类实例访问受保护的或私有的方法/变量?

让我们从另一个行为开始:即使您将方法/变量声明为私有,同一个类的另一个实例也可以访问它。 没关系,我可以忍受它。 我将这些类称为私有而不是实例私有。 现在问题部分:例如,在运行时我希望能够检查此类中的所有String变量都不为null,如果它们为null,则应将其更改为字符串“NULL”。 我可以使用reflection来运行变量并获取它们的值。 但是如果我扩展我的类并添加私有甚至保护变量,我的基类就无法访问它们。 在使用它们之前,我必须对变量设置setAccessible 。 所以请向我解释为什么基类(超类)不能从其子类访问私有/受保护变量。 它是它的子类,所以我不明白。 这背后有什么想法? 我知道超类不应该知道它的子类,但在我的例子中它是有意义的,不是吗? 是因为我不能或不应该以这种方式限制我的子类? 更新:根据答案,我还想知道:为什么不从同一个类访问另一个实例的私有变量被视为违反封装?

从命令行运行JUnit Test suite

如何从命令行运行Junit 4.8.1测试套件? 另外我想使用JUnit 4.8引入的类别,有没有一种方法可以从命令行指定我想要运行的类别。

检查类型是否为接口

我想validation发送给方法的参数,它必须是接口类型。 怎么问? void (Class interfaceType){ if (thisisnotaninterface){ throw… } }

Java – 包私有类中的方法可访问性?

如果我有一个java类,它是package-private(用“class”声明,而不是“public class”),如果里面的方法被声明为public或protected或package-private,那么确实没有区别,对吧? 那么我应该使用哪种,或者何时应该使用哪种? 我有点困惑。

在知道类时创建(盒装)原始实例

我需要一个方法来返回提供的类类型的实例。 假设所提供的类型被限制为可以创建它们的“空”实例。 例如,提供String.class将返回一个空String,提供Integer.class将返回一个初始值为零的Integer,依此类推。 但是我如何动态创建(盒装)原始类型? 像这样? public Object newInstance(Class type) { if (!type.isPrimitive()) { return type.newInstance(); // plus appropriate exception handling } else { // Now what? if (type.equals(Integer.class) || type.equals(int.class)) { return new Integer(0); } if (type.equals(Long.class) // etc…. } } 迭代所有可能的原始类型的唯一解决方案,还是有更简单的解决方案? 请注意两者 int.class.newInstance() 和 Integer.class.newInstance() 抛出InstantiationException (因为它们没有nullary构造函数)。

C#是否具有Java静态嵌套类的等价物?

我正在将Java转换为C#并具有以下代码(请参阅Java Context中关于其使用的讨论 )。 一种方法可能是创建一个单独的文件/类,但是有一个C#idom保留了Java代码中的意图吗? public class Foo { // Foo fields and functions // … private static class SGroup { private static Map idMap = new HashMap(); public SGroup(int id, String type) { // … } } }