我正在开发一个应用程序,我需要调用泛型类的方法,而不关心实例的实际类型.像下面的Java代码:
public class Item<T>{
private T item;
public doSomething(){...}
}
...
public void processItems(Item<?>[] items){
for(Item<?> item : items)
item.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
当时我很着急,所以我通过使用我需要调用的方法定义一个接口并使泛型类实现它来解决我的问题.
public interface IItem
{
void doSomething();
}
public class Item<T> : IItem {
private T item;
public void doSomething(){...}
}
...
public void processItems(IItem[] items)
{
foreach(IItem item in items)
item.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
这种解决方法工作正常,但我想知道实现相同行为的正确方法是什么.
编辑:
我忘了提到调用者processItems不知道实际的类型.实际上,这个想法是作为参数传递的数组processItems可能包含混合类型.由于在.Net中不可能有这样的数组,因此使用非泛型基类或接口似乎是唯一的方法.
我正在编写一个Makefile,我想使用带有通配符的通用规则,比如
%: bkp/%
cp $< $@
Run Code Online (Sandbox Code Playgroud)
但我希望此规则仅对少数特定文件有效.例如,我想用列表定义变量
file_list = foo.c bar.c zzz.c
并配置规则,使其仅对此变量中列出的文件有效.我怎么做?
我对AD和LDAP查询的知识非常有限,所以我对如何使用通配符有一个简单的问题.
假设有一个displayName为"ITSM - 问题管理"的对象
我目前使用通配符实现的过滤器是这样的:
(displayName=SEARCHKEYWORD*)
Run Code Online (Sandbox Code Playgroud)
如果用户输入关键字"问题",他将无法找到该对象,因为它需要名称的第一部分,即"ITSM - "
我想在两端实现通配符,如下所示:
(displayName=*SEARCHKEYWORD*)
Run Code Online (Sandbox Code Playgroud)
理想情况下,这将允许输入"问题"并让它搜索"ITSM - 问题管理".但是当你把它放在开头时,通配符似乎不起作用.当我尝试它时,它似乎挂断而不返回任何结果.
关于如何解决这个问题的任何想法或想法?任何意见都将受到高度赞赏.谢谢!
我有一个通配符查询,看起来像:
q=location:los a*
Run Code Online (Sandbox Code Playgroud)
我想要它匹配"洛杉矶"和"洛杉矶alt".像这样的查询:
q=los*
Run Code Online (Sandbox Code Playgroud)
工作得很好,但只要我添加空格我就没有结果.我如何在通配符查询中使用空格?
我不知道在StackOverflow上发布你自己的问题答案是否合法,但我看到没有人问过这个问题.我去寻找一个C#Glob并没有找到一个,所以我写了一个其他人可能觉得有用的.
阅读Java在线教程我对通配符捕获一无所知.例如:
import java.util.List;
public class WildcardError {
void foo(List<?> i) {
i.set(0, i.get(0));
}
}
Run Code Online (Sandbox Code Playgroud)
为什么编译器不能保持赋值安全?它知道,通过执行例如带有整数列表的方法,它从i.get得到一个Integer值.因此,它尝试将索引0处的Integer值设置为相同的整数列表(i).那么,出了什么问题?为什么要写Wildcard助手呢?
我试图编写一个Makefile与我的源文件和目标文件分开,我似乎无法找到实现这一目标的正确方法.我有两种方法可行,但我希望有人可以指出"正确"的方法来做到这一点.
我的项目被分成一个src和obj文件夹,Makefile与这些文件处于同一级别.
第一种方法使用通配符函数查找源文件,src然后使用文本替换来确定相应的目标文件.
SRC = $(wildcard src/*.cpp)
OBJ = $(SRC:.cpp=.o)
prog: $(OBJ)
$(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) -o prog $(patsubst src/,obj/,$(OBJ))
%.o: %.cpp
$(CC) $(CFLAGS) -c $< -o $(COMPILE)/$(@F)
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但是,每次运行make prog它都会重新编译所有目标文件.该OBJ变量必须具有src/的所有对象的前面,否则我得到了"没有规则,使目标".从好的方面来说,我可以轻松地使用prog 目标中的patsubst 来指定目标文件.
第二种方法类似,但在OBJ变量上使用vpath和文本替换:
vpath = %.cpp src
vpath = %.o obj
SRC = $(wildcard src/*.cpp)
OBJ = $(subst src/,,$(SRC:.cpp=.o))
POBJ = $(patsubst src/,obj/$(SRC:.cpp=.o))
prog: $(OBJ)
$(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) -o prog $(POBJ)
%.o: %.cpp
$(CC) …Run Code Online (Sandbox Code Playgroud) 在Postgresql中搜索下划线时,字符的字面使用_不起作用.例如,如果你想搜索该结束了在任何列所有的表_by,这样的事情更改日志或活动信息,例如updated_by,reviewed_by等等,下面的查询工作差不多:
SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%_by'
Run Code Online (Sandbox Code Playgroud)
它基本上完全忽略了下划线并返回,就像你搜索了一样LIKE '%by'.这在所有情况下都可能不是问题,但它有可能成为一个问题.如何搜索下划线?
我知道之前有过一些线索,但我已经尝试了所有建议(我能找到的),到目前为止我没有任何工作......
考虑到这一点,这是我正在尝试做的事情:
首先,我想允许用户发布页面并为每个页面提供他们选择的子域名(例如:user.mysite.com).从我可以收集到的,最好的方法是使用mod_rewrite和.htaccess将user.mysite.com映射到mysite.com/user - 这是正确的吗?
如果这是正确的,有人可以给我明确的指示如何做到这一点?
另外,我在本地进行所有开发,使用MAMP,所以如果有人能告诉我如何设置我的本地环境以相同的方式工作(我读过这个更难),我将非常感激.老实说,我一直在尝试一切无济于事,因为这是我第一次做这样的事情,我完全迷失了.非常感谢您的帮助!
更新: 其中一些答案非常有用,但对于我想到的系统,不能为每个用户手动添加子域.我真正想问的是如何动态地执行此操作,并将wildcard.mysite.com重定向到mysite.com/wildcard-Tumblr的设置方式就是我想要做的完美示例.再次感谢!
所以,
SELECT * FROM table WHERE col LIKE '%'
Run Code Online (Sandbox Code Playgroud)
将返回一切.是否有查询的通配符
SELECT * FROM table WHERE col = '*'
Run Code Online (Sandbox Code Playgroud)
显然*不起作用,我只是把它放在那里,以表明我想要一个通配符.我选择的列包含1到12之间的整数,我希望能够选择具有特定数字的所有记录,或者选择带有通配符的所有记录.
谢谢,