优秀是一种习惯!!!
Solo  当前访客:1 开始使用

AmethystFOB

记录精彩人生

类使用问题汇总

2023-11-29 10:15:17 amethystfob
0  评论    0  浏览

类使用问题汇总

一、如下内部类,如何在外部给类B中setTitle

public class A{
private class B{
private String title;
}
}

类B只有public时才能 A.B b = a.new B();创建

只有当内部类 B 被声明为公共类时,才能在外部类 A 以外的地方创建 B 的实例。

因此,在外部给类 B 中的 title 属性赋值,需要先创建外部类 A 的实例,然后通过该实例创建内部类 B 的实例,并使用该实例来访问和设置 title 属性。以下是一个示例代码:

public class A {
    public class B {
        private String title;

        public void setTitle(String title) {
            this.title = title;
        }

        public String getTitle() {
            return title;
        }
    }

    public static void main(String[] args) {
        A a = new A();
        A.B b = a.new B();
        b.setTitle("Hello, World!");
        System.out.println(b.getTitle());
    }
}

在上面的示例中,我们将内部类 B 声明为公共类,并在外部类 A 中创建了 B 的实例。然后,我们可以使用 b 来访问和设置 title 属性,就像在外部类中访问和设置普通的成员变量一样。

main() 方法中,我们调用 b.setTitle("Hello, World!")title 设置为 "Hello, World!"。然后,我们使用 b.getTitle() 获取 title 的值,并将其打印出来。

请注意,由于内部类 B 是公共的,所以可以在外部类 A 以外的地方创建 B 的实例。但是,如果内部类 B 是私有的,则只能在外部类 A 内部或者通过外部类的实例来创建和访问 B 的实例。

二、java实体中若该字段值为null,那么删除不显示该字段给前端

如果你想在将实体对象转换为JSON字符串时排除值为null的字段,可以使用Jackson库来实现。Jackson是一个流行的Java库,用于处理JSON数据。

首先,你需要添加Jackson库的依赖到你的项目中。如果你使用Maven,可以在pom.xml文件中添加以下依赖:

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.12.5</version>
</dependency>

接下来,你可以使用Jackson的ObjectMapper类来进行对象到JSON的转换。在转换之前,你需要配置ObjectMapper以排除空值字段。下面是一个示例:

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
   public static void main(String[] args) throws Exception {
       List<Menu> permenus = ...; // 假设已经有了permenus集合

       ObjectMapper objectMapper = new ObjectMapper();
       objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

       String json = objectMapper.writeValueAsString(permenus);
       System.out.println(json);
   }
}

上述代码中,我们创建了一个ObjectMapper对象,并使用setSerializationInclusion()方法设置JsonInclude.Include.NON_NULL,这样就会排除值为null的字段。

然后,我们使用writeValueAsString()方法将permenus集合转换为JSON字符串。

这样,转换后的JSON字符串中将不包含值为null的字段。

三、java实体中若该字段值为null,那么删除不显示该字段给前端

在 Java 实体中,如果某个字段的值为 null,你可以通过以下几种方式来实现删除不显示该字段给前端:

  1. 使用 JSON 序列化工具库:在将实体对象转换为 JSON 字符串时,大多数 JSON 序列化工具库都支持配置选项来忽略 null 值字段。例如,在使用 Jackson 库进行序列化时,可以使用 @JsonInclude(JsonInclude.Include.NON_NULL) 注解来指定只包含非空值的字段。

示例代码:

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class MyEntity {
   private String field1;
   private String field2;

   // 省略 getter 和 setter 方法
}

// 序列化实体对象
MyEntity entity = new MyEntity();
entity.setField1("value1");
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(entity);
  1. 使用 Map 代替实体对象:如果你不想显示字段的方式是返回一个 Map 对象而不是实体对象。在构建 Map 对象时,只添加非空值的字段。

示例代码:

import java.util.HashMap;
import java.util.Map;

public class MyEntity {
   private String field1;
   private String field2;

   // 省略 getter 和 setter 方法

   public Map<String, Object> toMap() {
       Map<String, Object> map = new HashMap<>();
       if (field1 != null) {
           map.put("field1", field1);
       }
       if (field2 != null) {
           map.put("field2", field2);
       }
       return map;
   }
}

// 转换为 Map 对象
MyEntity entity = new MyEntity();
entity.setField1("value1");
Map<String, Object> map = entity.toMap();

通过以上方式,你可以根据字段是否为 null 来选择是否将该字段包含在返回给前端的数据中。


标题:类使用问题汇总
作者:amethystfob
地址:https://newmoon.top/articles/2023/11/28/1701163166354.html

欢迎各路大侠指点留痕:
, ,
TOP