有没有办法在java中多次重复实例变量调用

时间:2017-07-14 19:26:15

标签: java methods repeat

我试图在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

2 个答案:

答案 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