我有一个带有两个变量的 Enum 类:int id和boolean collidable.
有没有办法制作一个只接收第一个变量并正确填充第二个变量的构造函数?请注意,第一个类变量是 id,它对于 Enum 的每个类型值都不同。
public enum TileID {
Grass(1,false),
GrassTall(2,false),
GrassFlower1(3,false),
GrassFlower2(4,false),
Water(5,false),
GrassTwig(6,true),
GrassRock(7,true);
private final int id;
private final boolean collidable;
TileID(int id, boolean collidable) {
this.id = id;
this.collidable = collidable;
}
public int getId() {
return id;
}
public boolean isCollidable() {
return collidable;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我想知道是否有办法直接访问与给定 id 对应的值,但我想没有。我在另一篇文章中找到了这种方法,我想我会这样做。
public static TileID valueOf(int id) {
return Arrays.stream(values())
.filter(legNo -> legNo.id == id)
.findFirst().orElse(null);
}
Run Code Online (Sandbox Code Playgroud)
感谢所有帮助过的人。
请考虑以下代码:
public Fingerprint(HashMap<String, Integer> measurements) {
this();
mMeasurements = measurements;
}
public Fingerprint(HashMap<String, Integer> measurements, String map) {
this(measurements);
mMap = map;
}
public Fingerprint(int id, String map, PointF location) {
this();
mLocation = location;
}
public Fingerprint(int id, String map, PointF location, HashMap<String, Integer> measurements) {
this(id, map, location);
mMeasurements = measurements;
}
Run Code Online (Sandbox Code Playgroud)
这样做的目的是什么(); 在这种背景下?因为我认为"this"指的是当前对象的字段.这是相同的定义吗?
我学到了两件事:
new-运算符创建一个新的实例,然后执行该规定connstructor初始化新的实例this())创建一个新实例.据我所知,这些陈述相互对立.
new Example()例如,然后不会创建两个实例,因为new-operator创建一个,构造函数调用this()并创建另一个实例?当然它不是,但现在究竟是什么创造了一个实例......?
class Example
{
private boolean _b;
public Example()
{
this(false);
}
public Beispiel(boolean b)
{
_b = b;
}
}
Run Code Online (Sandbox Code Playgroud) 这个问题是相同的:[ 如何在Java中从另一个调用一个构造函数?,但使用JavaScript。
我读到JavaScript在一个类中不支持构造函数的多个声明,这是真的吗?
那么,我可以实现以下代码吗?
class A {
constructor(a,b){
console.log([a,b]);
}
constructor(obj) {
console.log(obj.a,obj.b);
}
}
let x1 = new A(2,4);
let x2 = new A({a:2,b:4});
Run Code Online (Sandbox Code Playgroud)
回到最初的问题:
class A {
constructor(a,b){
console.log(a+b);
}
constructor(obj) {
this(obj.a,obj.b);
}
}
let x1 = new A(2,4);
let x2 = new A({a:2,b:4});
Run Code Online (Sandbox Code Playgroud)
如果没有,那么最“透明”的设计模式是什么?
我正在使用一个类并使用它作为输入来调用这个类。
professor = new Professor(EEEE, AAAA, YEARS_90, DEP);
depProf.addProfessor(professor)
Run Code Online (Sandbox Code Playgroud)
教授有一个 (String, String, Integer, String) 的构造函数,但在测试中我想从另一个地方用(Professor)作为输入调用它。
public Professor(String name, String surname, Integer yearOfBirth, String department) {
this.department = department;
Person curPerson = new Person(name, surname, yearOfBirth);
}
Run Code Online (Sandbox Code Playgroud)
如何制作教授(教授)的构造函数?如果这有任何意义。
我正在考虑在调用第二个构造函数时调用第一个构造函数,但实际上不知道如何使其工作。
这让我很生气(Eclipse Kepler)
public class FastReader
{
public static void main (String[] args)
{
FastReader a = new FastReader("hi");
}
public FastReader(int a)
{
}
public FastReader(String b)
{
FastReader(10);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method FastReader(int) is undefined for the type FastReader
at FastReader.<init>(FastReader.java:14)
at FastReader.main(FastReader.java:6)
Run Code Online (Sandbox Code Playgroud)
这几乎让我发疯了!帮我摆脱这个!谢谢!