diff --git a/src/main/java/xyz/zhouxy/plusone/commons/base/ByteRef.java b/src/main/java/xyz/zhouxy/plusone/commons/base/ByteRef.java new file mode 100644 index 0000000..4727db1 --- /dev/null +++ b/src/main/java/xyz/zhouxy/plusone/commons/base/ByteRef.java @@ -0,0 +1,75 @@ +/* + * Copyright 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package xyz.zhouxy.plusone.commons.base; + +import com.google.common.annotations.Beta; + +import xyz.zhouxy.plusone.commons.annotation.StaticFactoryMethod; +import xyz.zhouxy.plusone.commons.function.ByteUnaryOperator; + +@Beta +public class ByteRef { + + private byte value; + + public ByteRef(byte value) { + this.value = value; + } + + @StaticFactoryMethod(ByteRef.class) + public static ByteRef of(byte value) { + return new ByteRef(value); + } + + public byte getValue() { + return value; + } + + public void setValue(byte value) { + this.value = value; + } + + public void apply(ByteUnaryOperator operator) { + this.value = operator.applyAsByte(this.value); + } + + @Override + public String toString() { + return String.format("BoolRef[%s]", value); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + value; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ByteRef other = (ByteRef) obj; + return value == other.value; + } + +} diff --git a/src/main/java/xyz/zhouxy/plusone/commons/function/ByteUnaryOperator.java b/src/main/java/xyz/zhouxy/plusone/commons/function/ByteUnaryOperator.java new file mode 100644 index 0000000..b3c7244 --- /dev/null +++ b/src/main/java/xyz/zhouxy/plusone/commons/function/ByteUnaryOperator.java @@ -0,0 +1,27 @@ +/* + * Copyright 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package xyz.zhouxy.plusone.commons.function; + +import com.google.common.annotations.Beta; + +@Beta +@FunctionalInterface +public interface ByteUnaryOperator { + + byte applyAsByte(byte operand); + +}