草庐IT

Initialization

全部标签

java - 直接在java中初始化对象

是否可以像java中的String类一样直接初始化对象:如:Stringstr="something...";我想为我的自定义类做同样的事情:classMyData{publicStringname;publicintage;}这样可能吗MyClassobj1={"name",24};或MyClassobj1="name",24;初始化对象?或者怎么可能! 最佳答案 通常,您会使用构造函数,但您不必这样做!这是构造函数版本:publicclassMyData{privateStringname;privateintage;publi

Java:初始化错误的适当异常

当静态工厂方法无法初始化新对象时,我应该抛出哪个异常?我更喜欢引发有意义的异常而不是返回null。 最佳答案 如果你因为数据不足而在Factory中抛出异常,我喜欢抛出一个IllegalStateException,其描述类似于“无法构造X,未设置Y”。如果您由于数据冲突而在工厂中抛出异常,我喜欢抛出一个IllegalStateException,其描述类似于“无法构造X,Y与Z冲突”。如果您由于错误(或无意义的)值而在工厂中引发异常,我喜欢引发IllegalArgumentException,其描述类似于“Y不能是A”。如果您由于

Java:初始化错误的适当异常

当静态工厂方法无法初始化新对象时,我应该抛出哪个异常?我更喜欢引发有意义的异常而不是返回null。 最佳答案 如果你因为数据不足而在Factory中抛出异常,我喜欢抛出一个IllegalStateException,其描述类似于“无法构造X,未设置Y”。如果您由于数据冲突而在工厂中抛出异常,我喜欢抛出一个IllegalStateException,其描述类似于“无法构造X,Y与Z冲突”。如果您由于错误(或无意义的)值而在工厂中引发异常,我喜欢引发IllegalArgumentException,其描述类似于“Y不能是A”。如果您由于

java - 为什么在显式调用构造函数时不能引用实例方法?

有谁知道为什么可以在构造函数的第一行使用this()或super()引用static方法,但不是非静态方法?考虑以下工作:publicclassTestWorking{privateAa=null;publicTestWorking(AaParam){this.a=aParam;}publicTestWorking(BbParam){this(TestWorking.getAFromB(bParam));}//Itworksbecauseitsmarkedstatic.privatestaticAgetAFromB(Bparam){Aa=newA();a.setName(param.g

java - 为什么在显式调用构造函数时不能引用实例方法?

有谁知道为什么可以在构造函数的第一行使用this()或super()引用static方法,但不是非静态方法?考虑以下工作:publicclassTestWorking{privateAa=null;publicTestWorking(AaParam){this.a=aParam;}publicTestWorking(BbParam){this(TestWorking.getAFromB(bParam));}//Itworksbecauseitsmarkedstatic.privatestaticAgetAFromB(Bparam){Aa=newA();a.setName(param.g

java - 为什么静态字段初始化失败导致NoClassDefFoundError?

这是一个有趣的java问题。以下简单的java程序包含由方法静态初始化的静态字段。实际上,我强制计算初始化值的方法引发NullPointException,当我访问这样的静态字段时,会引发NoClassDefFoundError。似乎VM对待Class不完整。但是当我访问Class时,它仍然可用;有人知道为什么吗?classTestClass{publicstaticTestClassinstance=init();publicstaticTestClassinit(){Stringa=null;a.charAt(0);//forceanullpointexception;return

java - 为什么静态字段初始化失败导致NoClassDefFoundError?

这是一个有趣的java问题。以下简单的java程序包含由方法静态初始化的静态字段。实际上,我强制计算初始化值的方法引发NullPointException,当我访问这样的静态字段时,会引发NoClassDefFoundError。似乎VM对待Class不完整。但是当我访问Class时,它仍然可用;有人知道为什么吗?classTestClass{publicstaticTestClassinstance=init();publicstaticTestClassinit(){Stringa=null;a.charAt(0);//forceanullpointexception;return

java - 在 super 构造函数运行之前初始化字段?

在Java中,有没有办法在super构造函数运行之前初始化一个字段?即使是我能想到的最丑陋的hack也会被编译器拒绝:classBase{Base(StringsomeParameter){System.out.println(this);}}classDerivedextendsBase{privatefinalinta;Derived(StringsomeParameter){super(hack(someParameter,a=getValueFromDataBase()));}privatestaticStringhack(StringreturnValue,intignore

java - 在 super 构造函数运行之前初始化字段?

在Java中,有没有办法在super构造函数运行之前初始化一个字段?即使是我能想到的最丑陋的hack也会被编译器拒绝:classBase{Base(StringsomeParameter){System.out.println(this);}}classDerivedextendsBase{privatefinalinta;Derived(StringsomeParameter){super(hack(someParameter,a=getValueFromDataBase()));}privatestaticStringhack(StringreturnValue,intignore

java - 在 Java 中,可以从构造函数助手初始化最终字段吗?

我有一个最终的非静态成员:privatefinalHashMapmyMap;我想使用构造函数调用的方法对其进行初始化。由于myMap是最终的,我的“帮助”方法无法直接初始化它。当然我有选择:我可以直接在构造函数中实现myMap初始化代码。MyConstructor(StringsomeThingNecessary){myMap=newHashMap();myMap.put("blah","blahblah");//etc...//otherinitializationstuffunrelatedtomyMap}我可以让我的辅助方法构建HashMap,将其返回给构造函数,然后让构造函数将