对象验证

class C1
{
    private int num;
    public C1(int num)
    {
        this.num=num;
    }
}
public class Text_001
{
    public static void main(String[] args)
    {
        C1 t1=new C1(100);
        C1 t2=new C1(100);
        System.out.println(t1==t2);
        C1 t3=t1;
        System.out.println(t1==t3);
        t2=t1;
        System.out.println(t1==t2);
    }
}

结果:

false
true
true

对象在定义的时候调用了没有参数的构造函数,但是该类并不含有对应的构造函数

public class InitializeBlockDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        InitializeBlockClass obj=new InitializeBlockClass();
        System.out.println(obj.field);
        
        obj=new InitializeBlockClass(300);
        System.out.println(obj.field);
    }

}

class InitializeBlockClass{
    //下面这句在初始化块之前与之后,会影响到field字段的初始值
    //public int field=100;
    
    {
        field=200;
    }
    public int field=100;
    public InitializeBlockClass(int value){
        this.field=value;
    }
    public InitializeBlockClass(){
        
    }
}

结果:

100

300

在同时有初始化块和构造方法的情况下,构造方法优先。

public class Text_002
{

    public static void main(String[] args)
    {
        int i=100;
        C1 t1=new C1();
        t1.setNum(i);//静态方法访问没有附加static的变量
    }

}
class C1
{
    private int num;
    public void setNum(int num)
    {
        this.num=num;
    }
}
public class HowManyClassYouHaveCreated
{

    public static void main(String[] args)
    {
        int f=1;
        Hello h1=new Hello();
        Hello h2=new Hello();
        Hello h3=new Hello();
        Hello h4=new Hello();
        Hello h5=new Hello();
        Hello h6=new Hello();
        Hello h7=new Hello();
        System.out.println("HowManyClassYouHaveCreated?");
        System.out.println(h7.getNum());
        
    }

}
class Hello
{
    static private int num=0;
    public Hello()
    {
        System.out.println("Hello");
        num++;
    }
    public int getNum()
    {
        return num;
    }
}

 

转载于:https://www.cnblogs.com/zjm15511858030/p/9827743.html

对象验证是指对代码中的对象进行验证,以确保其符合预期的要求和约束条件。这可以帮助开发人员捕获和修复潜在的错误,并提高代码的可靠性和安全性。 一个例子是数据验证库,例如Joi。Joi是一个流行的JavaScript验证库,可以用于验证数据对象的各个方面,例如属性类型、最小/最大值、正则表达式模式等等。使用Joi,可以定义一个对象模式,然后将其传递给验证函数,以验证对象是否符合给定的模式。例如,下面的代码演示了如何使用Joi验证一个包含用户信息的对象: ```javascript const Joi = require('joi'); const userSchema = Joi.object({ username: Joi.string().alphanum().min(3).max(30).required(), email: Joi.string().email().required(), password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')).required(), repeat_password: Joi.ref('password'), birthyear: Joi.number().integer().min(1900).max(2013), }); const user = { username: 'john123', email: 'john@gmail.com', password: 'password123', repeat_password: 'password123', }; const { error, value } = userSchema.validate(user); if (error) { console.log(error.details); } else { console.log(value); } ``` 这个例子中,我们定义了一个包含多个属性的用户对象模式,并使用Joi进行验证。每个属性都有特定的条件和约束,以确保输入的数据符合预期。如果输入的数据不符合预期,Joi将返回一个错误对象,其中包含有关错误的详细信息。 总的来说,对象验证技术可以帮助开发人员编写更可靠和安全的代码,并减少潜在的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值