【问题标题】:Annotation: how to get the actual object?注释:如何获取实际对象?
【发布时间】:2012-11-09 15:55:03
【问题描述】:

提取表单主类:

Client k = getClient();
Truster kg = new Truster();
boolean ok = false;

while (!ok) {
    System.out.print("\n name: ");
    //io: is a class for my input from Keyboard

    kg.setName(io.readString()); // <--need the input from here

    //argu_vali is my ValidationClass
    if (argu_vali.analyse(k, "mylist") == 0) {
        ok = true;
    }
}

ok = false;
while (!ok) {
    System.out.print("\n: ");
    kg.setSumme(io.readInteger());
    if (argu_vali.analyse(kg, "sum") == 0) {
        ok = true;
    }
}

k.add_credit(kg);

我的班级客户:

class Client{
     String name;

     @t_list_Check
     private ArrayList <truster> t_list= new ArrayList<>();
}

我的班级委托人:

class Truster{
     String name;

     @Min(0)
     int sum;
}

我自己的 t_list ValidatorClass:

public class t_list_Validator implements ConstraintValidator<t_list_Check, Collection> {

    @Override
    public void initialize(t_list_Check a) {
    }

    @Override
    public boolean isValid(Collection kg_list, ConstraintValidatorContext cvc) {
        Object[] objects = kg_list.toArray();

        if (objects.length < 1) {
            return true;
        }

        String new_name = objects[objects.length-1].toString(); //<---need here the
                                                                //right input from above
        for (Object o : kg_list) {
            if (new_name.equals(o.toString())) {
                return false;
            }
        }
        return true;
    }
}

我现在的问题是,我只是为t_list 中的第一个元素取了正确的名称。对于我的信任者 (kg.setName(io.readString());) 的第二个输入,我在 ownValidator 中收到来自 objects[objects.length-1].toString() 的只是来自 t_list 的最后一个元素,而不是实际元素。

例如:

  • 1.运行:
  • main 中的输入:test1
  • t_list_Validator 中的值 new_name:test1

...

  • 2.运行:
  • main 中的输入:测试 2
  • value new_name in t_list_Validator: test1 // 此处需要实际输入:“test2”

【问题讨论】:

    标签: java list object input annotations


    【解决方案1】:

    只需将元素添加到列表中即可解决问题。验证后将其从列表中删除,然后继续验证......

    while (!ok) {
        System.out.print("\n name: ");
    
    
        kg.setName(io.readString()); 
    
        k.add(kg); // add here the element
    
        if (argu_vali.analyse(k, "mylist") == 0) {
            ok = true;
    
        }
        k.remove(k.getList().size()-1); //delete the element and go on with validation
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 2011-01-10
      • 2015-07-19
      • 2014-01-06
      • 1970-01-01
      • 2021-10-25
      • 2020-01-20
      相关资源
      最近更新 更多