如何创建一个通用方法,该方法是两个无效的对象和一个类< t>并返回一个强制的非无效价值
我想制作一个通用方法,以确定第一个参数是null
,如果是这种情况,则返回 second ,这是默认值,否则返回第一个。
我可以做到这一点吗?
我不知道如何正确实施它。
public static <T> ifNull(Object parameter, Object default, Class<T> type) {
return type.cast(parameter == null ? default: parameter));
}
注意:此代码对真实不起作用,这只是一个示例。
I want to make a generic method that determines whether the first parameter is null
, and if it is the case returns the second which is the default, else returns the first.
Can I make this possible?
I don't know how to implement it properly.
public static <T> ifNull(Object parameter, Object default, Class<T> type) {
return type.cast(parameter == null ? default: parameter));
}
Note: this code doesn't work for real, it's just an example.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我认为这个链接可能有用:
Java 中是否存在相当于 null 合并运算符 ( ??) 在 C# 中?
或
I think this link might be useful:
is there a Java equivalent to null coalescing operator (??) in C#?
or
您可以使用类似的东西,
You can use something like this,
我不是100%确定的,但我认为您想要这样的东西:
I am not 100 % sure, but i think you want something like that:
如果您要接收两个 nullable
对象的对象
type type,并希望通过传递<的实例,将它们动态化为给定类型代码> class&lt; t&gt; 对您的方法,我认为您打算实现这一目标:class&lt; t&gt;
对象代表类或接口方法
cast ()
将给定对象施放到特定类型t
,如果该对象是可以分配给该类型的,否则classcastException
将是扔。请注意,编译器不会发出这种降落方式的警告(它总是可能不安全)。可选
是一个特殊的容器 - 对象,它带有 java 8 ,以便在结果值为null
的情况下使用返回类型。 可选对象可能包含一个值或空为空,但是它永远不会是null
(如果您遵循良好的做法,并且 使用可选的字段,方法参数,而不将其存储在任何地方)optional.ofnullable()
创建可选对象包含给定值,如果是 non-null ,否则返回空的可选。方法
或()
将在提供的可选的情况下替换当前可选对象。方法执行的结果将如下:
注意:
&lt; t&gt;
或野生卡<代码>&lt;?扩展数字&gt; 在修饰符之间和返回类型 或关键字void
()以上&lt; t&gt;
是加入类型参数和可选&lt; t&gt;
是返回类型 )。默认值
是Java中的关键字。If you are receiving two nullable objects of
Object
type and want to type-cast them dynamically to the given type by passing an in instance ofClass<T>
to your method, I think you were intending to achieve this:Class<T>
object represents a class or interfaceMethod
cast()
will cast the given object to a particular typeT
, if it's the object is assignable to that type, otherwise aClassCastException
will be thrown. Note that compiler will not issue warnings for such way of downcasting (which is always potentially unsafe).Optional
is a special container-object introduced with Java 8 in order to be used a return type in cases when the resulting value could benull
. Optional object might either contain a value or be empty, but it would never benull
(if you are following good practices and not using optional as a field, method parameter and not storing it anywhere)Optional.ofNullable()
creates optional object containing the given value, if it's non-null, otherwise returns an empty optional.Method
or()
will substitute the current optional object, if it is empty, with the provided optional.The result of method execution will be the following:
Note:
<T>
or wild card<? extends Number>
between modifiers and return type or keywordvoid
(in the method above<T>
is ageneric type parameter andOptional<T>
is a return type).default
is a keyword in Java.