Class.forName()和之间有什么区别Class.forName().newInstance()?
我不明白这个显着的区别(我已经读过一些关于它们的东西!).请你帮助我好吗?
我对C#非常熟悉,但开始在Java中工作更多.我希望得知Java中的枚举基本上与C#中的枚举相同,但显然情况并非如此.最初,我很高兴得知Java枚举可能包含多个数据,这似乎非常有利(http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html).但是,从那时起我发现C#中缺少许多功能,例如能够轻松地为枚举元素分配特定值,以及因此无需花费大量精力就能将整数转换为枚举(即整数值转换为相匹配的Java枚举).
所以我的问题是:对于带有一堆公共静态最终字段的类,Java枚举是否有任何好处?或者它只提供更紧凑的语法?
编辑:让我更清楚.Java枚举对于具有相同类型的一组公共静态最终字段的类有什么好处?例如,在第一个链接的行星示例中,枚举对具有这些公共常量的类有什么好处:
public static final Planet MERCURY = new Planet(3.303e+23, 2.4397e6);
public static final Planet VENUS = new Planet(4.869e+24, 6.0518e6);
public static final Planet EARTH = new Planet(5.976e+24, 6.37814e6);
public static final Planet MARS = new Planet(6.421e+23, 3.3972e6);
public static final Planet JUPITER = new Planet(1.9e+27, 7.1492e7);
public static final Planet SATURN = new Planet(5.688e+26, 6.0268e7);
public static final Planet URANUS = new Planet(8.686e+25, 2.5559e7);
public static final Planet NEPTUNE = …Run Code Online (Sandbox Code Playgroud) 我想在coffeescript中编写一个静态帮助器类.这可能吗?
类:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
Run Code Online (Sandbox Code Playgroud)
使用:
Box2DUtility.drawWorld(w,c);
Run Code Online (Sandbox Code Playgroud) 可能重复:
静态初始化块
请考虑以下代码:
public class Test {
{
System.out.println("Empty block");
}
static {
System.out.println("Static block");
}
public static void main(String[] args) {
Test t = new Test();
}
}
Run Code Online (Sandbox Code Playgroud)
我们知道首先执行静态块,然后执行空块.但问题是我从来没有能够理解空块的实际效用.任何人都可以展示一个真实的例子 -
任何人都可以解释以下程序的输出吗?我认为构造函数在实例变量之前被初始化.所以我期待输出为"XZYY".
class X {
Y b = new Y();
X() {
System.out.print("X");
}
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Z extends X {
Y y = new Y();
Z() {
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}
Run Code Online (Sandbox Code Playgroud) 我发现在Java中,有一个叫做的功能static block,它包括在第一次加载类时执行的代码(我不明白'加载'意味着什么,它是否意味着初始化?).是否有任何理由在静态块内而不是在构造函数中执行初始化位?我的意思是,即使构造函数做同样的事情,在第一次初始化类时也要做所有必要的事情.什么是静态块完成哪些构造函数不能?
我在使用Enums的Java中遇到了问题.我已阅读有关为Enums分配值参数的文档.但是,我的问题是多值的问题,是否可能?
这就是我想要实现的:我有一个语言枚举.每种语言都由其名称和一些较短的别名表示(并非总是如此,并且并不总是相同的别名数)
这是一个例子:
public enum Language{
English("english", "eng", "en", "en_GB", "en_US"),
German("german", "de", "ge"),
Croatian("croatian", "hr", "cro"),
Russian("russian")
}
Run Code Online (Sandbox Code Playgroud)
我可以像这样定义一个枚举,并通过调用Language.valueOf()获得正确的枚举值吗?
我有情况,我想在实例化类时只读取一次配置文件.
假设我有一个名为的方法readConfig(),它读取配置并将其放入Map对象中.当程序需要使用配置值时,它会使用它的define键读取对象.我想知道构造函数只调用它的生命周期.我可以将我的方法readConfig()放入构造函数中,这会给我一次性调用的好处,还是有其他机制可以做到这一点?
我注意到最近在很多项目中,我都注意到了
static {
//some code here
}
Run Code Online (Sandbox Code Playgroud)
我只是在寻找一些关于此的信息,特别是我习惯于在方法中使用的代码块,或者只是类,这只是用静态修饰符设置块中的所有代码,还是有更多的东西给它?
我曾经习惯afterPropertiesSet()在Spring bean中初始化类属性.现在我看到这个任务可以通过Java的内置静态和非静态初始化器来完成.我能做些什么我afterPropertiesSet()不能使用初始化程序块?
java ×9
constructor ×2
enums ×2
class ×1
coffeescript ×1
spring ×1
spring-mvc ×1
static ×1
static-block ×1