java static 方法使用笔记

有入参的static方法,可以正常使用

static的作用是申明:这是类的静态方法,什么时候都可以调用,可以传入入参,也可以不传。

上代码:

1.带静态方法的类:

public class MakeParameters {

    public static InsuranceSearchRQ makeBaseRqParms(InsuranceSearchRQ rq){
        ChannelInfo channel = new ChannelInfo();
        channel.setFirstChannelNo(BaseConst.FIRST_CHANNEL_NO);
        channel.setWebSite(BaseConst.WEB_SITE);

        rq.setChannelInfo(channel);
        rq.setLanguage(BaseConst.LANGUAG);
        rq.setTimeStamp(BaseConst.TIMESTAMP);
        rq.setTransactionId(BaseConst.TRANSACTION_ID);
        rq.setVersion(BaseConst.VERSION);

        return rq;
    }

}

2.测试类:

  

package com.doit.zz;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.basemake.zz.MakeParameters;
import com.travelsky.logic.insurance.dto.InsuranceSearchRQ;
import com.travelsky.logic.insurance.dto.InsuranceSearchRS;
import com.travelsky.logic.insurance.dto.MaintainQueryParam;
import com.travelsky.logic.shopping.service.IInsuranceSearchService;
import com.utils.zz.JsonMapper;

public class InsureTest {
    ApplicationContext ctx=new ClassPathXmlApplicationContext("helloservice.xml");

    @Test
    public void testInsure() throws Exception{
        InsuranceSearchRQ rq=new InsuranceSearchRQ();
        MaintainQueryParam maintainQueryParam=new MaintainQueryParam();
        maintainQueryParam.setProductCode("7000000");
        rq.setMaintainQueryParam(maintainQueryParam);
        MakeParameters.makeBaseRqParms(rq);
        System.out.println(JsonMapper.toNonNullJson(rq));//1

        maintainQueryParam.setProductCode("12345");
        InsuranceSearchRQ rq2=new InsuranceSearchRQ();
        rq2.setMaintainQueryParam(maintainQueryParam);
        MakeParameters.makeBaseRqParms(rq2);
        System.out.println(JsonMapper.toNonNullJson(rq2));//2

        InsuranceSearchRS rs=new InsuranceSearchRS();
        IInsuranceSearchService insService=(IInsuranceSearchService)ctx.getBean("iInsuranceSearchService");
        rs=insService.getInsuranceSearchRS(rq);

        String rsJson = JsonMapper.toNonNullJson(rs);
        System.out.println(rsJson);
    }

}

3.结果

{"channelInfo":{"firstChannelNo":"71","webSite":"zh_CN"},"timeStamp":"20150108161025","version":"0.01","transactionId":"20150108161025","language":"zh","insTravelerInfos":[],"maintainQueryParam":{"productCode":"7000000"}}
{"channelInfo":{"firstChannelNo":"71","webSite":"zh_CN"},"timeStamp":"20150108161025","version":"0.01","transactionId":"20150108161025","language":"zh","insTravelerInfos":[],"maintainQueryParam":{"productCode":"12345"}}

在1处和2出分别打印调用静态方法结果

可以看到:两次调用静态方法:入参不一样,结果也是不一样的。

时间: 2024-10-24 05:58:09

java static 方法使用笔记的相关文章

JAVA Static方法与单例模式的理解

近期用sonar測评代码质量的时候,发现一个问题,project中一些util类,曾经写的static方法都提示最好用单例的方式进行改正. 为此,我细致想了想,发现还是非常有道理的.这里谈谈我个人对static方法与单例模式的理解. 所谓单例模式,我不做过多解释,推荐java设计模式之禅这本书,好好理解一下. 这里我谈谈两种写法: 曾经一些公共的类,我不假思索,习惯依照例如以下写法去写: public class DateUtil { public final static String DAT

java static 方法与普通方法区别

static 方法不需要实例化,静态方法在JVM刚加载的时候就编译过了.在程序的运行过程中随时可以调用,不需要去实例化某个对象然后再去调用,可以直接用类名去调用,直到结束释放内存,且静态方法只能调用类静态变量,不能调用非static修饰变量,且任意一个对象对静态方法进行修改,其他调用该静态方法也会相应修改 普通方法在实例化时候才会被创建分配内存,非静态方法既可以访问静态方法又可以访问非静态方法. 总结,相对于静态方法而言,动态方法占的内存资源就少些,因为它是什么时候使用什么时候实例化,也就是说在

java——多线程——单例模式的static方法和非static方法是否是线程安全的?

单例模式的static方法和非static方法是否是线程安全的? 答案是:单例模式的static方法和非static方法是否是线程安全的,与单例模式无关.也就说,如果static方法或者非static方法不是线程安全的,那么不会因为这个类使用了单例模式,而变的安全. 闲话休说,看代码: import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TestSingl

java/android 设计模式学习笔记(3)---工厂方法模式

这篇来介绍一下工厂方法模式(Factory Method Pattern),在实际开发过程中我们都习惯于直接使用 new 关键字用来创建一个对象,可是有时候对象的创造需要一系列的步骤:你可能需要计算或取得对象的初始设置:选择生成哪个子对象实例:或在生成你需要的对象之前必须先生成一些辅助功能的对象,这个时候就需要了解该对象创建的细节,也就是说使用的地方与该对象的实现耦合在了一起,不利于扩展,为了解决这个问题就需要用到我们的工厂方法模式,它适合那些创建复杂的对象的场景,工厂方法模式也是一个使用频率很

Java基础复习(1) 为什么在java中我们要将main定义为一个static方法?

2015-10-20 以前学习java知识,只是跟着用到的代码跳着学了些,学的不全还错漏成片……恩,好惨! 思来想去,是必须要好好复习加整理下,不然写出来的东西真没法读了.所以,就从今儿起一点一点的啃下去吧. 回头创建了Class文件,又看到了熟悉的main函数……然后,有了标题的问题.那么,今天就回顾这个问题吧. 1 public class Review_p2 { 2 public static void main(String[] args) { 3 byte b = 3; 4 5 byt

在java中为什么要把main方法定义为一个static方法?

我们知道,在C/C++当中,这个main方法并不是属于某一个类的,它是一个全局的方法,所以当我们执行的时候,c++编译器很容易的就能找到这个main方法,然而当我们执行一个java程序的时候,因为java都是以类作为程序的组织单元,当我们要执行的时候,我们并不知道这个main方法会放到哪个类当中,也不知道是否是要产生类的一个对象,为了解决程序的运行问题,我们将这个main方法定义为static,这样的话,当我们在执行一个java代码的时候,我们在命令提示符中写:java Point(Point为

Java连载41-this关键字其他注意事项、static方法

一.this关键字 1.this在多数情况下都会省略 2.this不能用在含有static的方法之中. 3.static的方法的调用是不需要对象的,直接使用格式:类名.方法名:没有当前对象,自然不能访问当前对象的name. package com.bjpowernode.java_learning; ? public class D41_ { String name2 = "fjajf"; public static void main(String[] args) { String

java什么时候声明static方法

1.经常用到的方法,可以声明为static,这样省去了每次new对象的内存空间,因为非static方法,需要new对象才能调用此方法.但因此也产生多线程访问线程安全问题 比如: 2.当一个方法或者变量需要在类加载器加载类的时候,就需要初始化时,声明为static.Static变量在项目启动时就分配内存,直到程序结束释放内存.static和const变量在项目启动时就已经分配内存了,而且方法调用之后也不会被释放. 3.声明为static方法后,内存中就只有一份数据了.所以就要注意线程安全问题,就需

Java语言中synchronized 修饰在 static方法和 非static方法的区别(转)

synchronized锁住的是对象,当初始化对象的时候,JVM在对象初始化完成之前会调用方法外面的语句块,这个时候对象还不存在,所以就不存在锁了. 那么,在static方法和非static方法前面加synchronized到底有什么不同呢? 大家都知道,static的方法属于类方法,它属于这个Class(注意:这里的Class不是指Class的某个具体对象),那么static获取到的锁,就是当前调用这个方法的对象所属的类(Class,而不再是由这个Class产生的某个具体对象了).而非stat