我试图在java中重复一次即时变量调用N次,如下所示:
System.out.println(ClassName.InstantVarialble);
System.out.println(ClassName.IntantVariable * N);
//where N = 3, should preform the following:
System.out.println(ClassName.IntantVariable.IntantVariable.IntantVariable);
这甚至可能吗?如果没有,是否有一个内置的java函数,可以做我要求的,或者我可以获得有关如何编写可以重复即时调用的方法的想法?
我正在处理Doubly Linked List,它不会返回到null位置,这是我试图完成doesnt return to null position的图像。它与他们在此视频中所做的相似https://youtu.be/BspFdzVvYe8?list=PLPf65fTMT69iUS9A43IyaB1Rz3BBOiPpa
答案 0 :(得分:0)
您可以在for循环中执行此操作,询问变量是否在该位置上具有某个值,因为我只是假设您的结构可能是这样的:
public class A{
public void something(){
B varB = new B();
for(int i = 0; i < 3; i++){
if(varB != null)
varB = varB.getBB();
}
System.out.println(varB.toString());
}
}
public class B{
public B getBB(){ return this; }
}
实际上不知道这是否是你想要实现的目标。
答案 1 :(得分:0)
虽然我不推荐它,但它可以通过反射实现。我不确定你为什么要这样做:字段必须以相同的名字命名。
class A {
public static int field = 99;
}
class B {
public static A field = new A();
}
class C {
public static B field = new B();
}
public class Blah
{
public static String foo(Class<?> clazz, String fieldName, int n)
throws NoSuchFieldException, IllegalAccessException
{
for (int i = 0; i < n - 1; ++i)
{
clazz = clazz.getField(fieldName).get(null).getClass();
}
return clazz.getField(fieldName).get(null).toString();
}
public static void main(String... args)
throws NoSuchFieldException, IllegalAccessException
{
System.out.println(foo(C.class, "field", 1));
System.out.println(foo(C.class, "field", 2));
System.out.println(foo(C.class, "field", 3));
}
}
Run it here。样本输出:
乙@ 65e579dc
甲@ 61baa894
99
如果希望能够为私人字段执行此操作,则需要to allow access。