我见过很多人写的代码publicstaticfinalStringmystring=...然后只使用一个值。为什么他们必须这样做?为什么他们必须在使用之前将值初始化为final?更新好的,谢谢大家的回答,我理解这些键的含义(publicstaticfinal)。我不明白的是为什么人们会使用它,即使常量只会在一个地方并且只在同一个类中使用。为什么要宣布它?为什么我们不只使用变量? 最佳答案 final表示变量的值不会改变——也就是说,一个constant,它的值在声明之后就不能被修改。当你想创建一个String时使用publicfin
我最近开始学习Java,发现每个Java类都必须在单独的文件中声明,这很奇怪。我是C#程序员,C#不强制执行任何此类限制。Java为什么要这样做?有没有设计考虑?编辑(基于少数答案):在IDE时代,为什么Java不消除这个限制?这不会破坏任何现有代码(或者会?)。 最佳答案 我刚刚采用了一个C#解决方案并做到了这一点(删除其中包含多个公共(public)类的任何文件)并将它们分解为单独的文件,这让生活变得更加轻松。如果您在一个文件中有多个公共(public)类,您会遇到一些问题:你给这个文件起什么名字?公开课之一?另一个名字?人们对
这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Whyusegettersandsetters?在你的类中创建访问私有(private)变量的方法而不是公开变量有什么好处吗?例如第二种情况比第一种好吗?//Case1publicclassShoe{publicintsize;}//Case2publicclassShoe{privateintsize;publicintgetSize(){returnsize;}publicvoidsetSize(intsz){size=sz;}} 最佳答案 我有一天在
在Java中,变量应该保持私有(private)以实现更好的封装,但是静态常量呢?这个:publicstaticfinalintFOO=5;结果与此等价:privatestaticfinalintFOO=5;...publicstaticgetFoo(){returnFOO;}但哪种做法更好? 最佳答案 不直接在代码中使用常量的原因之一。假设FOO稍后可能会更改(但仍保持不变),例如publicstaticfinalintFOO=10;。只要没有人愚蠢到直接硬编码值,就不应该破坏任何东西吗?没有。Java编译器会将上面的Foo等常量
这个问题在这里已经有了答案:What'stheuseofprivateconstructorinJava?(11个回答)关闭7年前。我的第一个问题是——classExplain(){publicExplain(){}}构造函数应该总是声明为公共(public)的吗?如果我创建一个private构造函数会怎样。我总是看到构造函数是隐含的public。那么为什么private构造函数有用呢?还是根本没用。因为没有人可以调用它,或者永远不会创建一个对象(因为private构造函数)!这是我的第二个问题。 最佳答案 不,构造函数可以是pub
我需要一个小的容器类来存储一些应该是不可变的字符串。由于String本身是不可变的类型,所以我想到了类似的东西:publicfinalclassImmu{publicfinalStringfoo;publicfinalStringbar;publicImmu(finalStringfoo,finalStringbar){this.foo=foo;this.bar=bar;}}许多人似乎根本反对使用公共(public)字段,而是使用Getter。恕我直言,在这种情况下这只是样板,因为String本身是不可变的。我可能在这个问题上遗漏了其他想法? 最佳答案
什么是更好的做法和原因:通过protected字段或私有(private)字段上的公共(public)getter访问基类变量。(无论如何,getter都会公开) 最佳答案 如果无论如何都会有一个公共(public)setter/getter,你为什么要比绝对必要的更广泛地公开这个领域本身?这意味着它可以立即被子类写入(除非它是final开始的)。我个人喜欢我的所有字段都是私有(private)的:它在API和实现之间提供了更清晰的分离。我认为父类(superclass)和子类之间的关系类似于调用者和被调用者的关系——对底层实现的更
我刚刚在我的日志文件中多次看到此异常:Invokingrequestmethodresultedinexception:publicstaticnativelongjava.lang.System.currentTimeMillis()java.lang.IllegalArgumentException:Invalidhandlermethodreturnvalue:1302697287376atorg.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver.getModel
我正在尝试将基于SpringMVC的REST应用程序迁移到Jboss7.1.0。在启动时,Jboss初始化显示一切都已正确启动,所有war文件都已成功部署。我在集成SpringMVN和Jboss的RestEasy服务时遇到了很多问题,我想知道这是否是jbossresteasy与SpringMVN之间的另一个冲突。当我向REST服务发出请求时,我收到以下错误:12:52:31,541INFO[org.springframework.web.context.ContextLoader](MSCservicethread1-5)RootWebApplicationContext:initia
是否有包含spring-core3的公共(public)Maven存储库?我整天都能找到2.5.4但找不到3。如果答案是肯定的,请在答案中包含位置。 最佳答案 您可以从Spring'sMavenrepository获取里程碑和候选版本.存储库难以浏览,但文件在那里,例如spring-core3.0.0.RC1pom这是一个示例存储库声明和依赖项:springsourcemavenrepohttp://maven.springframework.org/milestone...org.springframeworkspring-cor