可能重复:
运行时局部变量的通用类型
我是Java泛型的新手,来自.NET世界,我习惯于能够编写这样的方法:
public void genericMethod<T>(T genericObject)
{
if (genericObject is IList<String>)
{
//Do something...
}
}
Run Code Online (Sandbox Code Playgroud)
该方法接受泛型类型的对象,并检查该对象是否实现了通用接口的特定版本IList<>,在本例中IList<String>.
现在,在Java中,我能够做到这一点:
public <T> void genericMethod(T genericObject)
{
if (genericObject instanceof Set<?>)
{
//Do something...
}
}
Run Code Online (Sandbox Code Playgroud)
但
Java并没有让我做if (genericObject instanceof Set<String>)
据我所知,由于类型擦除,通常在Java中,这将由类对象处理,我们将执行以下操作:
public <T> void genericMethod(T genericObject)
{
Class<OurTestingType> testClass = OurTestingType.class;
if (genericObject.getClass() == testClass)
{
//Do something...
}
}
Run Code Online (Sandbox Code Playgroud)
但由于我正在检查的类型是通用接口,你不能这样做:
Class<Set<String>> testClass = Set<String>.class
那么,在Java中,我如何检查通用对象是否实现了特定类型Set<String>?
当我在SQL-Server 2008中运行此代码时,
select case when '6/1/2012' < '6/1/2012' then 1 else 0 end
Run Code Online (Sandbox Code Playgroud)
我得到0.
如果我跑,
select case when '6/1/2012 0:00:00.000' < '6/1/2012' then 1 else 0 end
Run Code Online (Sandbox Code Playgroud)
我也得到0.
但是,如果我跑
select case when '6/1/2012' < '6/1/2012 0:00:00.000' then 1 else 0 end
Run Code Online (Sandbox Code Playgroud)
我得到1.
为什么是这样?