精华内容
下载资源
问答
  • C++:模板实例化的每个模板(每个模板指的是对于声明时候对模板指定的类型,如List,List中的int,double.)都有自己的模板静态数据成员,该模板的所有对象,共享一个静态数据成员。Tips:(重要)1.模板的静态...

    C++:

    类模板实例化的每个模板类(每个模板类指的是对于声明时候对模板指定的类型,如List,List中的int,double.)都有自己的类模板静态数据成员,该模板类的所有对象,共享一个静态数据成员。

    Tips:

    (重要)1.模板类的静态数据成员应在文件范围内初始化。(包含模型)

    (重要)2.每个模板类有自己的类模板的静态数据成员和成员函数副本。

    1.2详见《C++Templates》

    示例代码:

    #include

    using namespace std;

    template < typename T >

    class Test

    {

    public:

    Test(T num){

    k += num;

    }

    Test(){

    k += 1;

    }

    static void incrementK()

    {

    k += 1;

    }

    static T k;

    };

    template

    T Test::k = 0;

    int main()

    {

    //static Field

    Test a;

    Test b(4);

    cout << "Test::k --> " << a.k << endl;

    cout << "Test::k --> " << b.k << endl;

    Test v;

    Test m;

    cout << "Test::k --> " << Test::k << endl;

    cout << "Test::k --> " << Test::k << endl;

    //static Function

    cout << endl;

    Test::incrementK();

    cout << "After invoke Test::incrementK() Test::k --> " << Test::k << endl;

    Test::incrementK();

    cout << "After invoke Test::incrementK() Test::k --> " << Test::k << endl;

    return 0;

    }

    测试输出:

    0818b9ca8b590ca3270a3433284dd417.png

    Java:

    1、对于Java来说并不存在泛型类,List l1和 List l2会被当成一个类进行处理①测试程序如下,也没有实例化的类生成额外的.class文件。

    2、不管为泛型的参数传入何种实参,他们依旧被当做同一个类,因此在静态方法,静态初始化块或者静态变量的声明和初始化中不允许使用类型形参。

    ①测试程序:

    import java.util.ArrayList;

    import java.util.List;

    public class A3 {

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    List l1List = new ArrayList<>();

    List l2List = new ArrayList<>();

    System.out.println(l1List.getClass() == l2List.getClass());

    }

    }输出:

    0818b9ca8b590ca3270a3433284dd417.png

    试图在泛型类中定义静态变量,导致编译错误:

    public class R {

    static T info;

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    }

    }

    错误:

    0818b9ca8b590ca3270a3433284dd417.png

    展开全文
  • 使用反射,可以对实体中的所有String类型的成员变量的值执行trim操作(1)trim/****对object中的所有成员变量的值,执行trim操作*即去掉首尾的空格*@paramobj*@throwsSecurityException*@throwsNoSuchFieldException*@...

    使用反射,可以对实体类中的所有String类型的成员变量的值执行trim操作

    (1)trim/***

    * 对object中的所有成员变量的值,执行trim操作

    * 即去掉首尾的空格

    * @param obj

    * @throws SecurityException

    * @throws NoSuchFieldException

    * @throws IllegalArgumentException

    * @throws IllegalAccessException

    */

    public static void trimObject(Object obj) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException

    {

    if(obj==null){

    return;

    }

    List fieldsList =getAllFieldList(obj.getClass());

    for(int i=0;i

    Field f=fieldsList.get(i);

    Object vObj=getObjectValue(obj,f );

    if(f.getType().getName().equals("java.lang.String") && (vObj instanceof String) ){

    String str=(String)vObj;

    if(str!=null){

    str=str.trim();

    f.setAccessible(true);

    f.set(obj, str);

    }

    }

    }

    }

    应用场景// 是否清除成员变量的值前后的空格

    boolean isTrim2=false;

    String isTrim22Str=DictionaryParam.get(Constant2.DICTIONARY_GROUP_GLOBAL_SETTING,"is_trim_columnValue");

    if(!ValueWidget.isNullOrEmpty(isTrim22Str)){

    isTrim2=Boolean.parseBoolean(isTrim22Str);

    }

    if(isTrim2&&user!=null){

    try {

    ReflectHWUtils.trimObject(user);

    } catch (SecurityException e) {

    e.printStackTrace();

    } catch (NoSuchFieldException e) {

    e.printStackTrace();

    } catch (IllegalArgumentException e) {

    e.printStackTrace();

    } catch (IllegalAccessException e) {

    e.printStackTrace();

    }

    }

    (2)把值为空字符串的成员变量设置为null/***

    * 把对象中空字符串改为null

    * @param obj : 要修改的对象:java bean

    * @param isTrim : 是否清除成员变量的值前后的空格

    * @throws SecurityException

    * @throws NoSuchFieldException

    * @throws IllegalArgumentException

    * @throws IllegalAccessException

    */

    public static void convertEmpty2Null(Object obj,boolean isTrim)

    throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{

    if(obj==null){

    return;

    }

    List fieldsList =getAllFieldList(obj.getClass());

    for(int i=0;i

    Field f=fieldsList.get(i);

    Object vObj=getObjectValue(obj,f );

    if(f.getType().getName().equals("java.lang.String") && (vObj instanceof String) ){

    String str=(String)vObj;

    if(isTrim){//清除首尾的空格

    if(str!=null){

    str=str.trim();

    }

    }

    if(SystemHWUtil.EMPTY.equals(str)){

    //System.out.println(f.getName());

    //System.out.println(f.getType().getName());

    f.setAccessible(true);

    f.set(obj, null);

    }else{

    if(isTrim){//清除首尾的空格

    f.setAccessible(true);

    f.set(obj, str);

    }

    }

    }

    }

    }

    /***

    * 不trim

    * @param obj

    * @throws SecurityException

    * @throws NoSuchFieldException

    * @throws IllegalArgumentException

    * @throws IllegalAccessException

    */

    public static void convertEmpty2Null(Object obj) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{

    if(obj==null){

    return;

    }

    convertEmpty2Null(obj, false/* isTrim */);

    }

    应用场景:// 是否清除成员变量的值前后的空格

    boolean isTrim2=false;

    String isTrim22Str=DictionaryParam.get(Constant2.DICTIONARY_GROUP_GLOBAL_SETTING,"is_trim_columnValue");

    if(!ValueWidget.isNullOrEmpty(isTrim22Str)){

    isTrim2=Boolean.parseBoolean(isTrim22Str);

    }

    try {

    //把对象中空字符串改为null

    ReflectHWUtils.convertEmpty2Null(ordersDetail,isTrim2);

    if(!ValueWidget.isNullOrEmpty(ordersDetail.getToothOrders())){

    ReflectHWUtils.convertEmpty2Null(ordersDetail.getToothOrders(),isTrim2);//不需要再set一遍

    }

    if(!ValueWidget.isNullOrEmpty(ordersDetail.getProducts())){

    ReflectHWUtils.convertEmpty2Null(ordersDetail.getProducts(),isTrim2);//不需要再set一遍

    }

    } catch (SecurityException e) {

    e.printStackTrace();

    } catch (NoSuchFieldException e) {

    e.printStackTrace();

    } catch (IllegalArgumentException e) {

    e.printStackTrace();

    } catch (IllegalAccessException e) {

    e.printStackTrace();

    }

    展开全文
  • public class MainTest { public static void ... List<String> list=new ArrayList<>(); List<String> result=addName(list); for (int i = 0; i < list.size(); i++) { System.out.printl.

    在这里插入图片描述

    public class MainTest {
        public static void main(String[] args) {
            List<String> list=new ArrayList<>();
            List<String> result=addName(list);
            for (int i = 0; i < list.size(); i++) {
                System.out.println(result.get(i));
            }
        }
        public static List<String> addName(List<String> list){
            list.add("name1");
            list.add("name2");
            list.add("name3");
            list.add("name4");
            return list;
        }
    }
    
    

    在这里插入图片描述

    展开全文
  • 导包时的通配符import java.util._类似 Java 的import java.util.*Scala 成员变量初始化class Foo{//String类型的默认值为null 不适合局部变量var s: String = _}类型通配符Java 的泛型系统有一个通配符类型,...

    导包时的通配符

    import java.util._

    类似 Java 的

    import java.util.*

    Scala 类中成员变量初始化

    class Foo{

    //String类型的默认值为null 不适合局部变量

    var s: String = _

    }

    类型通配符

    Java 的泛型系统有一个通配符类型,例如 List,任意的List类型都是List的子类型,如果我们想编写一个可以打印所有 List 类型元素的方法,可以如下声明:

    public static void printList(List> list){

    for(Object elem: list){

    System.out.println(elem + " ");

    }

    }

    对应的 Scala 版本为:

    def printList(list: List[_]): Unit ={

    list.foreach(elem => println(elem + " "))

    }

    可变参数

    Java 声明可变参数如下:

    public static void printArgs(String ... args){

    for(Object elem: args){

    System.out.println(elem + " ");

    }

    }

    调用方法如下:

    //传入两个参数

    printArgs("a", "b");

    //也可以传入一个数组

    printArgs(new String[]{"a", "b"});

    在 Java 中可以直接将数组传给 printArgs 方法,但是在 Scala 中,你必须要明确的告诉编译器,你是想将集合作为一个独立的参数传进去,还是想将集合的元素传进去。如果是后者则要借助下划线:

    本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出

    printArgs(List("a", "b"): _*)

    模式匹配

    def matchTest(x: Int): String = x match {

    case 1 => "one"

    case 2 => "two"

    case _ => "anything other than one and two"

    }

    expr match {

    case List(1,_,_) => " a list with three element and the first element is 1"

    case List(_*) => " a list with zero or more elements "

    case Map[_,_] => " matches a map with any key type and any value type "

    case _ =>

    }

    List(1,2,3,4,5).foreach(print(_))

    // Doing the same without underscore:

    List(1,2,3,4,5).foreach( a => print(a))

    在 Scala 中,在一个 object 中非私有变量的 getter 和 setter 方法会被隐式定义好,getter 方法名和变量名相同,我们可以使用 _= 自定义 setter name,更好的控制赋值

    class Test {

    private var a = 0

    def age = a

    def age_=(n:Int) = {

    require(n>0)

    a = n

    }

    }

    Usage:

    val t = new Test

    t.age = 5

    println(t.age)

    将函数赋给变量

    如果尝试将函数直接赋值给一个变量,这个函数会被直接调用,并将调用的结果赋值给变量,如果在函数名称后面加上 _,那么赋值的是函数体本身

    class Test {

    def fun = {

    // Some code

    }

    val funLike = fun _

    }

    访问 Tuple 元素

    val t = (1, 2, (7, 9))

    println(t._1, t._2, t._3._1, t._3._2)

    参数展开

    def getConnectionProps = {

    ( Config.getHost, Config.getPort, Config.getSommElse, Config.getSommElsePartTwo )

    }

    如果客户端需要拿到所有连接参数

    val ( host, port, sommEsle, someElsePartTwo ) = getConnectionProps

    如果仅仅需要拿到 host 和 port

    val ( host, port, _, _ ) = getConnectionProps

    其它用法——简化函数

    val nums = List(1,2,3,4,5,6,7,8,9,10)

    nums filter (_ % 2 == 0)

    nums reduce (_ + _)

    nums.exists(_ > 5)

    nums.takeWhile(_ < 8)

    展开全文
  • *判断一个实体对象实例的所有成员变量是否为空 *@param obj 校验的对象实例 *@return List *@throws Exception */ public static List<String> isObjectFieldEmpty(Object obj) throws ...
  • 模板实例化的每个模板(每个模板指的是对于声明时候对模板指定的类型,如List,List中的int,double.)都有自己的模板静态数据成员,该模板的所有对象,共享一个静态数据成员。 Tips: (重要)1.模板的静态...
  • 我有一个具有方法的ProductRegisterprivate List products = new CopyOnWriteArrayList<>();void registerProduct(Product p) {products.add(p);}记住产品是私有的,没有吸气剂,并且是在内部创建的,我该...
  • 常用的概述和使用 ​ 1. 常用的包(熟悉) ​ 1.1 包的名称和功能 ... java.util包,utility,工具包,工具集合,如Scanner,Random,List集合... java.io包,input,output,输入输出包,读写文件,FileInputSt...
  • 不太确定我是否理解您的问题-您想让班上所有的现场成员吗?如果是这样,您可以这样做:CompilationUnit cu = JavaParser.parse(javaFile);for (TypeDeclaration typeDec : cu.getTypes()) {List members = typeDec....
  • 看一个例子:JavaCollection这个包含了上述介绍的4种集合类型的成员变量: import java.util.*; public class JavaCollection { List addressList; Set addressSet; Map addressMap; Properties addressProp; ...
  • 如果要获取某个参数的类型,可以用T.getClass().getName()进行判断,可是要获取该对象其中的成员变量或者成员方法,那么就只有通过反射(Field)机制来实现,通过加载字节码方式来获取相关的信息。 Field 是什么呢...
  • import java.util.List; /** * @author zx * @Description 通过锁 将不可切割的业务锁上 * @create 2018-07-25 21:09 **/ public class TestSynchronized { public static void ma...
  • import java.util.Arrays;public class Set {//数组private int[] list;//数组使用长度private int length;//扩容方法private void expand(){int[] l = new int[2*list.length];for(int i=0;...
  • 看一个例子:JavaCollection这个包含了上述介绍的4种集合类型的成员变量:import java.util.*;public class JavaCollection { List addressList; Set addressSet; Map addressMap; Properties ad...
  • Java类和对象

    2021-01-28 20:14:27
    文章目录Java类和对象面向对象基本概念对象类消息面向对象的特性封装性继承性多态性类的定义类声明类的访问限定修饰符类的其他修饰符`class ClassName``extends SuperClass``implements InterfaceNameList`成员的...
  • 引用数据类型的成员变量,比如说成员变量是某个数组、某个的对象等进行引用传递(将该成员变量的引用值(内存地址)复制一份给新的对象)。深拷贝基本数据类型的成员变量,进行值传递(将该属性值复制一份给新的对象)。...
  • 关于我的域对象中生成的getter和setter方法,我有一个小问题.我想为我的源代码使用一个通用的样式...不幸的是,我有几个有更多成员变量.我遇到的问题是我是一个非常懒惰的开发人员,我在Eclipse中创建了getter和s...
  • add()方法:成员变量size初始值为0,还分别定义了成员Object[] EMPTY_ELEMENTDATA数组初始为空;成员常量DEFAULT_CAPACITY为10表示该集合数组大小初始值为10; 当调用add()方法,add()方法内会调用ensureCapcityInte....
  • Java容器分析之List、...ArrayList成员变量有Object[] elementData,int size;其中elementData数组用来存储加入到ArrayList的对象,size为列表中实际的对象数目。ArrayList不是线程安全的。 Vector与A...
  • 比如Liststudents 是一个list,每个元素都是Student对象,Student对象中有成员变量name,age,等,那么我想根据age来排序,如何实现呢?1,使用Comparator 接口Student 结构如下:(省略getter,setter方法)public class...
  • 引用数据类型的成员变量,比如说成员变量是某个数组、某个的对象等,会重新分配内存并将成员变量拷贝一份赋值给新对象(将该成员变量的内容复制一份到新开辟的内存上,新的对象指向新的内存地
  • javaList元素的排序

    万次阅读 2019-06-11 11:17:12
    1.Collections排序 1)基本类型的元素 List<Integer> demo_list = new ArrayList<...2)实体元素的排序:通过某个成员变量的值做比较 方式一:Collections.sort(demo_list , (Bean b1, Bean b2) -&g...
  • 1、对象的属性:对象具有的各种特征,每个对象...5、JAVA中的成员变量和局部变量:​ 成员变量:在中定义,用来描述对象将要有什么。可以被本的方法和其它的方法使用。其作用域在整个内部都是可见的。Java中...
  • 将子函数中的result,传回给class的成员变量private List setConfigValues(...) {handler.apply(new SetAttrAssistant() {//传入匿名对象//成员函数public boolean setConfigData(Collection item...
  • Annotation能被用来为程序元素(、方法、成员变量等)设置元数据;Annotation不能影响程序代码的执行,无论添加、删除Annotation,代码始终如一的执行;如果希望让程序中的Annotataion能在 运行时其一定作用,只有...
  • 所谓Annotation就是提供了一种为程序元素设置元数据的方法,可用于修饰包、、构造器、方法、成员变量、参数和局部变量的声明,这些信息被存储在Annotation的“name=value”对中。Annotation能被用来为程序元素(...
  • Java中,如果A成员变量是B的一个对象,则此对象默认值为null,即对象名=null。如果想要正常使用b,需要在A的构造函数中调用B的构造函数。 要记得:B b=new B();和B b=null;完全不同。在使用时非常容易混淆 ...
  • javalist进行排序

    2018-12-10 10:47:46
    students 是一个list,每个元素都是Student对象,Student对象中有成员变量name,age,等, 那么我想根据age来排序,如何实现呢? 1,使用Comparator 接口 Student 结构如下:(省略getter,setter方法) publi...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 361
精华内容 144
关键字:

java类list成员变量

java 订阅