我正在为我的问题寻找一个简单的解决方案。我有这个代码:
local Month = {
Jan = 1, Feb = 2, Mar = 3, Apr = 4,
May = 5, Jun = 6, Jul = 7, Aug = 8,
Sep = 9, Oct = 10, Nov = 11, Dec = 12
}
...
p.main = function()
local text = ""
for k,v in pairs(Month) do
text = text .. " " .. k;
end
return text;
end
Run Code Online (Sandbox Code Playgroud)
当我打电话时,p.main()我希望它Jan Feb ... Dec(按顺序)打印,尽管它打印Jan Mar Apr Oct Feb …
假设我有几个对象(=类),每个对象都有一个方法getX():
public class A{
/* some code */
public float getX(){}
}
public class B{
/* some code */
public float getX(){}
}
Run Code Online (Sandbox Code Playgroud)
现在我想编写一个通用静态方法,如下所示:
public static <T> boolean isOverlaps(T obj) {
if (obj == null || (!obj.getClass().isInstance(A.class) && !obj.getClass().isInstance(B.class)))
return false;
return obj.getX() >= 0 && /*some logic*/; // here it falls
}
Run Code Online (Sandbox Code Playgroud)
IDE 说:
无法解析“T”中的方法“getX()”
如何在不进行强制转换的情况下正确解析该方法(因为它是通用方法)?有可能吗?
可以用 C++ 写这样的东西:
// ...
if(value <= switch(secValue){
case First:
return 1;
case Second:
return 2;
return -1;
}){
//... do some logic ...
} // end if
Run Code Online (Sandbox Code Playgroud)
谢谢