草庐IT

java - 我应该始终对类字段使用私有(private)访问修饰符吗?

目前我们正在运行checkstyle在我们的代码库中,它会标记所有不使用private访问修饰符的非静态类字段。这是一个有效的checkstyle规则,还是在某些情况下需要非私有(private)字段?例如,我认为JUnit测试用例在同一个包中创建的原因是它们可以使用default访问修饰符访问字段? 最佳答案 面向对象编程的主要特征之一是信息隐藏/封装。这意味着类只允许通过接口(interface)访问成员变量:getter和setter方法。因此其他类无法访问成员变量并以不需要的方式修改它们。所以checkstyle规则是有效的

java - hibernate h2 可嵌入列表预期为 "identifier"

我正在尝试在我的员工实体中关联一个函数列表(可嵌入),而H2似乎对这种期望“标识符”的说法不满意Causedby:org.h2.jdbc.JdbcSQLException:SyntaxerrorinSQLstatement"CREATETABLEEMPLOYEE_FUNCTIONS(EMPLOYEE_EMPLOYEEIDVARCHAR(255)NOTNULL,ACTIVEBOOLEANNOTNULL,DEPARTMENTNUMBERINTEGERNOTNULL,DESCRIPTIONVARCHAR(255),ORDER[*]INTEGERNOTNULL)";expected"ident

java - 通过 Java 中的反射设置私有(private)字段的最短、最好、最干净的方法是什么?

您好,我已经在J​​ava中使用过反射。但是,如果您使用的是Java标准(例如注入(inject)私有(private)字段),则必须编写大量代码才能完成工作。在Java对象中注入(inject)私有(private)字段的最短方法是什么?在广泛使用和生产就绪的库中是否有实现? 最佳答案 在不使用外部库的情况下,您需要:获取Field实例将字段实例设置为可访问设置新值如下:Fieldf1=obj.getClass().getDeclaredField("field");f1.setAccessible(true);f1.set(ob

Java——私有(private)构造函数 vs final 等等

假设有一个类,其所有构造函数都声明为私有(private)的。例如:publicclassThis{privateThis(){}publicsomeMethod(){//somethinghere}//somemore--nootherconstructors}据我所知,将所有构造函数设为私有(private)类似于将“This”类声明为final——这样它就无法扩展。但是,我收到的Eclipse消息给我的印象是这是可能的——可以扩展全构造函数私有(private)类。看看这个:当我尝试用类似的东西扩展这个类时publicclassThatextendsThis{...}Eclips

java - Java内部如何表示字符串?

我知道C字符串abc在C中内部是abc\0,Java也是这样吗? 最佳答案 不,在Java中不一样。没有空终止符。Java字符串是对象,而不是指向字符数组。它与Unicode字符一起保持长度,因此无需寻找空终止符。您不必在这里询问:查看JDK附带的src.zip中String.java的源代码。这是它的开始:publicfinalclassStringimplementsjava.io.Serializable,Comparable,CharSequence{/**Thevalueisusedforcharacterstorage.

java - 在 Java 中使用另一个类的私有(private)方法

我有两个类:publicclassClass1{}publicclassClass2{privatevoidsimpleMethod(){/*...*/}}在Class2中,我有私有(private)方法simpleMethod(),我想在同一项目的Class1中使用它。我不想将此方法重命名为public因为我不想在我的API中显示它。我可以创建public方法而不在API中显示它吗?或者,还有什么? 最佳答案 如果Class1和Class2都在同一个包中,您可以简单地删除private修饰符,使方法成为package-privat

Java Breakout 游戏过早退出

我正在介绍在线编程。但是,我被困在一项任务上。作业是编写一个闯关游戏。我已经成功编写了97%的游戏。然而,游戏在移除所有积木之前停止。有时还剩4block积木,有时是11block。程序设计为在计分器到达所有积木都消失的点时停止,因此它必须提前到达该点。我做错了什么?编辑:内联代码。和改写的问题/**File:Breakout.java*-------------------*Name:AlexGodin**ThisfilewilleventuallyimplementthegameofBreakout.*/importacm.graphics.*;importacm.program.

java - 在 JFrame 之间传递值

我有两个Jframes,其中frame1有一些文本字段,当单击frame1上的按钮时,我打开另一个JFrame,其中包含一个搜索框和一个包含搜索结果的JTable。当我单击JTable上的结果行时,我希望该特定值反射(reflect)在frame1文本字段中。我尝试将JFrame1的对象作为参数传递,但我不清楚如何实现这一点。任何帮助将不胜感激。谢谢 最佳答案 首先,您的程序设计似乎有点不对劲,就好像您正在为其中一个窗口使用JFrame而实际上您应该使用JDialog,因为听起来好像一个窗口应该依赖于另一个窗口。但无论如何,您传递G

java - 父类(super class)的私有(private)方法是如何解决的?

classA{privatevoidsayA(){System.out.println("PrivatemethodofA");}publicstaticvoidmain(Stringargs[]){AinstanceA=newB();instanceA.sayA();}}classBextendsA{}我原以为它会抛出一个运行时异常,因为在编译时编译器检查是否可以在A的引用上调用sayA()并在运行时-time它将检查sayA()是否可以在B的对象上调用。但它反而打印了“A的私有(private)方法”。 最佳答案 可访问性是一个

java - 结构数组,还是数组结构?

嗯。我有一个表,它是我需要用Java存储的结构数组。天真的don't-worry-about-memory方法说这样做:publicclassRecord{finalprivateintfield1;finalprivateintfield2;finalprivatelongfield3;/*constructor&accessorshere*/}Listrecords=newArrayList();如果我最终使用大量(>106)记录,偶尔访问单个记录,一次一个,我将如何弄清楚前面的方法(一个ArrayList)将与存储成本的优化方法进行比较:publicclassOptimizedR