==
为什么此代码中不允许使用public static bool operator == (VectorF left, object right) {
if (object.ReferenceEquals(null, right)) {
// handle null case
}
VectorF rightF = right as VectorF;
if (!object.ReferenceEquals(null, rightF)) {
// Compare VectorF
}
VectorI rightI = right as VectorI;
if (!object.ReferenceEquals(null, rightI)) {
// Compare VectorI
}
// and so on...
}
函数?
答案 0 :(得分:2)
如果您想在对象初始化过程中运行一些代码,请将其放在大括号中:
public class Demo{
Map<String,String> test = new HashMap<String,String>();
{ // This is now part of object initialization
test.put("A","A");
System.out.println(test);
}
}
在类声明部分中不允许使用 put
或任何其他方法调用,因为Java不知道何时运行此代码。该语言具有关于运行可执行代码的特定规则:它既可以是方法调用的一部分,也可以是对象或类初始化。
花括号中的代码成为对象初始化的一部分。只要您运行Demo d = new Demo()
test
地图,就会{"A", "A"}
插入{{1}},并且会打印地图本身。请注意,打印输出不会很漂亮。有关详细信息,请参阅this Q&A。
答案 1 :(得分:0)
这不是Java的工作方式。如果要在加载类时实现此put
,可以尝试使用static
块。
public class Demo{
static Map<String,String> test = new HashMap<String,String>();
static{
test.put("A","A");
System.out.println(test);
}
}
或者如果您希望在每次创建对象时对其进行初始化,请将其保存在适当的构造函数中或仅保留默认执行块(类似于static
,但不包含static
关键字)。
public class Demo{
Map<String,String> test = new HashMap<String,String>();
public Demo(){
test.put("A","A");
System.out.println(test);
}
}
答案 2 :(得分:0)
要在类中执行某些,您需要在类中定义一个方法,该类本身包含某些内容。
你做了: class - &gt; 东西正确: class - &gt;方法 - &gt; 东西