我想在方法之外使用它的构造函数来实例化一个对象。例如:
<dom-module id="test-element">
<template>
<div>Hello <span>{{name}}</span></div>
</template>
<script>
Polymer({
is: "test-element",
properties: {
name: String
}
});
</script>
</dom-module>
<dom-module id="test-element2">
<template>
<input value="{{name::input}}"/>
<test-element name="[[name]]"></test-element>
</template>
<script>
Polymer({
is: "test-element2",
properties: {
name: String
}
});
</script>
</dom-module>
如果我现在这样做......我收到此错误..
public class Toplevel {
Configuration config = new Configuration("testconfig.properties");
public void method1() {
config.getValue();
...etc
}
}
我想做这样的事情,所以我可以在我班级的任何地方调用配置,现在我不得不实例化配置对象......必须有这样做的方法。 ..非常感谢,非常感谢,提前谢谢。
修改
配置类:
Default constructor cannot handle exception type IOException thrown by implicit super constructor. Must define an explicit constructor
答案 0 :(得分:2)
您的Configuration
构造函数被声明为抛出IOException
。使用此构造函数实例化Configuration
的任何代码都必须捕获它。如果您使用变量初始值设定项,则无法捕获它,因为您无法提供catch
块;你可以放在这里,只有一个表达。没有方法可以在任何一个上声明throws
子句。
您的替代方案:
在Configuration
构造函数中实例化Toplevel
。您可以catch
构造函数体中的异常,或者您可以声明构造函数throws
异常。
public class Toplevel {
Configuration config;
public Toplevel() {
try {
config = new Configuration("testconfig.properties");
} catch (IOException e) { // handle here }
}
// ...
在Configuration
类的实例初始化程序中实例化TopLevel
,您可以在catch
处理异常并处理它。
public class Toplevel {
Configuration config;
{
try {
config = new Configuration("testconfig.properties");
} catch (IOException e) { // handle here }
}
// ...
在Configuration
构造函数中捕获并处理异常,因此调用代码不必捕获异常。这不是首选,因为您可能实例化了无效的Configuration
对象。调用代码仍需要确定它是否有效。
public class Configuration {
// Your instance variables
private boolean isValid;
public Configuration( String configPath ) {
try {
// Your code that might throw an IOE
isValid = true;
} catch (IOException e) {
isValid = false;
}
}
答案 1 :(得分:1)
当你创建一个新的Toplevel对象时,你没有为它声明一个特定的构造函数,并且Toplevel的属性被实例化,因为你的代码用Configuration config = new Configuration("testconfig.properties");
描述它
所以你不处理Configuration构造函数的IoException! 更好的方法是声明Toplevel的特定构造函数,如下所示:
public Toplevel(){
try{
this.config = new Configuration("testconfig.properties");
} catch (IOException e) {
// handle Exception
}
}