使用接口是一种非常简单的方法来删除依赖项,但是当您的某个类需要一个未由接口定义的方法时会发生什么?如果您正在使用构造函数注入或工厂,那么如何在不进行转换的情况下访问该额外方法?这可能吗?
这是一个有这个问题的工厂的例子.我想做一些不可能的事吗?谢谢你的帮助.
interface IFoo {
int X { get; set; }
int Y { get; set; }
}
public class A : IFoo {
int X { get; set; }
int Y { get; set; }
}
public class B : IFoo {
int X { get; set; }
int Y { get; set; }
int Z { get; set; }
}
public static class FooFactory {
public static IFoo GetFoo(string AorB) {
IFoo result = null;
switch (AorB) { …Run Code Online (Sandbox Code Playgroud) 我的一些代码在x64中失败,我开始挖掘,这是由于一些代码通过Runtime.getRuntime()调用本机的东西.exec()...
但是这段代码可能已经有几年了,它没有考虑到更新的操作系统,而且有些代码看起来像这样:
String osName = System.getProperty("os.name");
if (osName.equals("Windows NT") || osName.equals("Windows 2000") || osName.equals("Windows XP")) {
cmd = new String[3];
cmd[0] = WINDOWS_NT_2000_COMMAND_1;
cmd[1] = WINDOWS_NT_2000_COMMAND_2;
cmd[2] = command;
} else if (osName.equals("Windows 95") || osName.equals("Windows 98") || osName.equalsIgnoreCase("Windows ME")) {
cmd = new String[3];
cmd[0] = WINDOWS_9X_ME_COMMAND_1;
cmd[1] = WINDOWS_9X_ME_COMMAND_2;
cmd[2] = command;
Run Code Online (Sandbox Code Playgroud)
我想为所有新操作系统(w2008,Windows 7,...)修复此问题,但我无法访问各种主机,而且我不想在VM中安装只是为了查看值,有人在某处知道某些清单吗?还没找到.
编辑:我需要:Windows 7,Windows 2003,Windows 2008,Windows 2008R2此外,我不是1.6u18所以不用担心一些人提到的bug.
我有非循环音频,我需要在iPhone/iPod touch上具有与硬件(技术术语)相同的延迟.在一个极端情况下,根据触摸,在一秒钟内顺利播放10-20个样本.
谁是这项任务的王者?OpenAL或远程IO音频单元,为什么?
有没有人知道任何示例或代码显示可以像DateTime结构一样用于距离的类或结构?我需要能够以英尺和英寸为单位添加,减去和显示数据,并且使用转换方法会变得混乱.一个类或结构将是完美的,但我在搜索中没有发现任何东西.
在PHP这样的脚本语言中有这样的for循环会是一个非常糟糕的主意:
string s("ABCDEFG");
int i;
for( i = 0; i < s.length(); i ++ )
{
cout << s[ i ];
}
Run Code Online (Sandbox Code Playgroud)
这是一个例子,我不是在构建这样的程序.(对于那些觉得他们必须告诉我为什么这段代码< 在这里插入不好的东西 >>的人
如果将此C++示例转换为类似的PHP脚本,则会在每个循环周期计算字符串的长度.这将导致现实脚本中的巨大性能损失.
我认为这同样适用于C++程序,但是当我看一下教程,几个开源库和其他代码时,我发现循环的限制器没有预先计算.
s吗?我正在尝试Java中的泛型,并想到了这个例子.
如果我有ClassA<T>,我可以用引用具体类的子类覆盖它,例如ClassB extends ClassA<String>,然后ClassA使用T的任何地方,ClassB可以使用String.
现在,忽略了以前的ClassA和ClassB,如果我有一个抽象的ClassA,它有一个通用的方法:
public <T> void doSomething(T data);
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以ClassB用一个具体的类覆盖它,类似于前面的例子?我想出了一些有用的东西,即参数化类和方法,但我想知道是否有另一种方法.
class ClassA<T> {
public void doSomething(T data) {};
}
Run Code Online (Sandbox Code Playgroud)
我不想将参数放在类中的原因是因为它只有一个方法可以对该类型执行任何操作,而某些子类甚至可能不想在该方法中执行任何操作,因此我不需要放置如果它不打算使用它,则该类中的参数.
注意:所有子类ClassA都是匿名类,因此增加了乐趣.
在grails中创建URL的标准方法是:
<a href="${createLink(controller:'news', action: 'show', params: [id: news.id])}">${news.title}</a>
Run Code Online (Sandbox Code Playgroud)
生成网址: /news/show/102
我想要更多SEO友好的URL,如:
/news/102/this-is-the-hottest-news-today
Run Code Online (Sandbox Code Playgroud)
在Grails中最干净的方法是什么?我可以使用grails URLMapping映射/news/show/102到/news/102,但我如何创建像上面这样的完整URL?
如何在form_Load上的vb.net中选择完整的第一行datagridview
我有一个具有一次性物体作为成员的物体.
public class MyClass
{
private MyDisposableMember member;
public DoSomething
{
using (member = new MyDisposableMember())
{
// Blah...
}
}
}
Run Code Online (Sandbox Code Playgroud)
可以有很多方法MyClass,都需要using声明.但是,如果我这样做呢?
public class MyClass
{
private MyDisposableMember member = new MyDisposableMember();
public DoSomething
{
// Do things with member :)
}
~MyClass()
{
member.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,member正在处理析构函数.这会有用吗?这种方法有什么问题吗?
我想在c#中将两位小数值加倍,我怎么能这样做?
double inputValue = 48.485;
Run Code Online (Sandbox Code Playgroud)
结束后
inputValue = 48.49;
Run Code Online (Sandbox Code Playgroud)