(Biblioteca de soporte de desarrollo) Clase opcional

Clase opcional

La función principal de la clase Optionnal es tratar con nulos.

package 开发支持类库;

interface IMessage{
	public String getContent();
}

class MessageImpl implements IMessage{
	@Override
	public String getContent() {	//覆写接口方法
		return "www.baidu.com";		
	}
}

class MessageUtil{
	public static IMessage getMessage() {
		return new MessageImpl();	//返回一个实例化对象
	}
	public static void useMessage(IMessage msg) {
		if(msg != null) {
			System.out.println(msg.getContent());		//有可能因为出现null,而导致空指向
		}
	}
}

public class Optional类 {
	public static void main(String[] args) {
		MessageUtil.useMessage(MessageUtil.getMessage());	
	}
}

www.baidu.com

La parte que recibe la citación suele ser pasiva. Entonces, para resolver esta operación de procesamiento pasivo, hay una clase OPtionnal en la foto de clase de Java, que puede implementar operaciones de procesamiento nulo. Los siguientes métodos de operación se proporcionan en esta clase:

  • Devuelve datos vacíos: public static <T> Opcional <T> empty ();
  • Obtener datos: public T get ();
  • Guarde los datos, pero no se permite nulo: public static <T> Opcional <T> de (valor T);

        Si hay un nulo al guardar los datos, se lanzará una NullPointException.

  • Guarde los datos, permitiendo que estén vacíos: public static <T> Opcional <T> ofNullable (valor T);
  • Devuelve otros datos cuando está vacío: public T orElse (T other);

Ejemplo: modificar el programa y completarlo de acuerdo con el programa regular

package 开发支持类库;

import java.util.Optional;

interface IMessage{
	public String getContent();
}

class MessageImpl implements IMessage{
	@Override
	public String getContent() {	//覆写接口方法
		return "www.baidu.com";		
	}
}

class MessageUtil{
	public static Optional<IMessage> getMessage() { 	//返回一个Optional对象
		return Optional.of(null);		//空值
	}
	public static void useMessage(IMessage msg) {
		if(msg != null) {
			System.out.println(msg.getContent());		//有可能因为出现null,而导致空指向
		}
	}
}

public class Optionnal类 {
	public static void main(String[] args) {
		IMessage temp = MessageUtil.getMessage().get();	//获取数据
		MessageUtil.useMessage(temp);	
	}
}

Excepción en el hilo "main" java.lang.NullPointerException
    en java.base / java.util.Objects.requireNonNull (Objects.java:208)
    en java.base / java.util.Optional.of (Optional.java:111)
    en
    Biblioteca de clases de soporte de desarrollo.MessageUtil.getMessage ( Optionnal class.java:18 ) en Biblioteca de clases de soporte de desarrollo.Optionnal class.main (Optionnal class.java:29)

En este momento, el contenido de Optional.of () es nulo y se producirá un error durante la ejecución y le dirá dónde está el método. El puntero nulo es anormal.

Dado que se permite almacenar contenido nulo en la clase Opcional, el procesamiento nulo también se puede realizar cuando se obtienen datos. Si usa el método get (), se producirá una "Excepción en el hilo" principal "java.lang.NullPointerException" durante la ejecución, por lo que puede reemplazarlo con orElse (T otro);

Ejemplo: use orElse (T other) para resolver valores nulos

package 开发支持类库;

import java.util.Optional;

interface IMessage{
	public String getContent();
}

class MessageImpl implements IMessage{
	@Override
	public String getContent() {	//覆写接口方法
		return "www.baidu.com";		
	}
}

class MessageUtil{
	public static Optional<IMessage> getMessage() { 	//返回一个Optional对象
		return Optional.ofNullable(null);		//有对象
	}
	public static void useMessage(IMessage msg) {
		if(msg != null) {
			System.out.println(msg.getContent());		//有可能因为出现null,而导致空指向
		}
	}
}

public class Optionnal类 {
	public static void main(String[] args) {
		IMessage temp = MessageUtil.getMessage().orElse(new MessageImpl());	//如果数据为null,则返回一个Message对象
		MessageUtil.useMessage(temp);	
	}
}

www.baidu.com

En la operación y procesamiento de todos los tipos de datos de referencia, null es un problema técnico importante, por lo que la clase Optional proporcionada por JDK1.8 es muy útil para el procesamiento de nulos, y también es una clase de programa que se utilizará en el desarrollo de proyectos futuros.

Supongo que te gusta

Origin blog.csdn.net/weixin_46245201/article/details/112566713
Recomendado
Clasificación