我正在定义一个类:
class Foo<I extends Bar & Comparable<I>> {
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨I被隐藏I.我想第二次I出现在定义中是隐藏在第一个范围内,好像变量I可以分配给两种不同的类型.怎么做正确?
编辑:
这是一个内在阶级.完整的代码可以是:
class Baz<I> {
class Foo<I extends Bar & Comparable<I>> {
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,如果我重新提名内I到J,我不知道这I和J实际上是同一类型.
我目前安装了Office 2010,并且正在尝试帮助仍在使用VSTO解决方案的同事.由于我的视觉工作室副本将项目文件更新为指向O2010 dll,因此这变得一团糟.如果我要在2010年旁边安装Office 2007,我将能够在没有升级向导的情况下打开解决方案,或者是我唯一的选择,对解决方案进行重大架构更改或者回到O2007,直到我的雇主将O2010作为新标准.
我正在尝试将一些VB.net代码转换为C#.我使用SharpDevelop进行繁重的工作; 但它生成的代码打破了一些枚举操作,我不知道如何手动修复它.
原始VB.net代码:
Enum ePlacement
Left = 1
Right = 2
Top = 4
Bottom = 8
TopLeft = Top Or Left
TopRight = Top Or Right
BottomLeft = Bottom Or Left
BottomRight = Bottom Or Right
End Enum
Private mPlacement As ePlacement
''...
mPlacement = (mPlacement And Not ePlacement.Left) Or ePlacement.Right
Run Code Online (Sandbox Code Playgroud)
生成C#代码:
public enum ePlacement
{
Left = 1,
Right = 2,
Top = 4,
Bottom = 8,
TopLeft = Top | Left,
TopRight = Top | Right,
BottomLeft …Run Code Online (Sandbox Code Playgroud) 当我将大文件上传到rails服务器时,我总是收到请求超时错误.我不知道在哪里更改请求超时值.
我有以下格式的文本文件数:
196903274115371008 @266093898
Prince George takes his first public steps with his mom, Catherine, Duchess of
Cambridge.
Run Code Online (Sandbox Code Playgroud)
我想删除除第一个换行符之外的所有额外空格 + 换行符。所以我想上面是这样的:
196903274115371008@266093898
Prince George takes his first public steps with his mom, Catherine, Duchess of Cambridge.
Run Code Online (Sandbox Code Playgroud)
我写了以下代码:
package remove_white_space222;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Remove_white_space222 {
public static void main(String[] args) throws FileNotFoundException, IOException {
FileReader fr = new FileReader("input.txt");
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter("outfile.txt");
String line;
while((line = …Run Code Online (Sandbox Code Playgroud) 我需要一种开放式格式来以通用方式编写故事(使用占位符/变量).为了使故事具体化,我想设置一个键/值对列表,并在发布时应用它们.我还想将样式与内容分开,以便我可以轻松地发布到网页,pdf等.
例: @varname@ is a great place.
我选择了Markdown来解决内容/样式分离,但我不知道一种简单的方法来参数化文本的某些部分,并在使用像pandoc这样的工具生成html/pdf输出时填写它们.
有什么建议?这可以通过降价来实现,还是有合适的降价扩展?
在VS2015中重建一个MFC应用程序后,Windows设置的边框填充从添加到对话框的外部变成了它的内部。由于更改而不是粗边框使对话框变大,对话框大小保持不变,控件可用的空间量减少。
边框填充的默认值在不同版本的 Windows 之间发生了变化。当 Vista 出来使玻璃更引人注目时,它从较小的值(0?)变为 4 像素,并且似乎一直保持到 8.x,只是在 Win10 中回落到 0。(注意,我在工作中没有任何 8/10 机器可用,我要离开谷歌了。)
这意味着控件的空间量在不同的 Windows 版本之间有所不同。因此,似乎不可能在所有版本的操作系统上都有看起来不错的对话框。如果我将它们放置在 V7/8 中默认的 4px 边框上,我最终会在默认 W10 系统的底部/右侧有明显的额外空间。如果我针对 W10 进行优化,我的底部按钮将在 W7/8 上被切断。
这不会发生在干净的测试项目中,所以这与我的应用程序中的特定代码有关。
我附上了一张 0 vs 4 像素边框在 VS2010 或更新版本中构建的应用程序的样子的图片。图像标题为 VS2015;但额外的测试确定该更改是随 V110 运行时 (Visual Studio 2012) 引入的。
对话框大小似乎在MoveWindow()用于将较小对话框定位在主要对话框周围的代码中变得一团糟。
我已经提取了在下面做一个对话框所涉及的代码:
RECT DlgRect;
double Fx, Fy, Fw, Fh; // the dialog in the screenshots
double Px, Py, Pw, Ph; // another dialog
double ScreenHeight = (double)GetSystemMetrics(SM_CYSCREEN);
g_pRedactedDlg = new CRedactedDlg(NULL);
g_pRedactedDlg->GetClientRect(&DlgRect);
Fw = DlgRect.right + …Run Code Online (Sandbox Code Playgroud) 我找不到像我这样的问题,所以我希望这不是一个重复的问题.
再次,这是关于覆盖和隐藏.我想 - 但我可能错了 - 我理解两者.
以下代码按预期运行,两种方法都已隐藏.method1因为它是一个私有方法并且私有方法不能只被隐藏,所以方法2因为它的静态和静态方法不能被覆盖,它们只能被隐藏.
public class Child extends Parent {
public void method1(){System.out.println("child");}
public static void method2(){ System.out.println("static child");}
}
class Parent{
private void method1(){ System.out.println("parent");}
public static void method2(){ System.out.println("static parent");}
public static void main(String[] args){
Parent p = new Child();
p.method1(); //prints out "parent"
p.method2(); //prints out "static parent"
}
}
Run Code Online (Sandbox Code Playgroud)
如果我读了规格,它说:
http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.3.3
可以将方法声明为final以防止子类覆盖或隐藏它.
如果我将Parent类中的method1更改为"final"
private final void method1(){ System.out.println("parent");}
Run Code Online (Sandbox Code Playgroud)
一切正常.编辑开始:我期望编译器错误说最终方法无法隐藏,但是没有发生.:编辑结束
问题1:这是否意味着只能隐藏静态方法?在我正在阅读的书中(OCA学习指南,Jeanne Boyarsky和Scott Selikoff,第252页),他们清楚地说隐藏了一种私人方法.
然后我将Parent类中的method2更改为
public final static void method2(){ System.out.println("static parent");}
Run Code Online (Sandbox Code Playgroud)
现在编译器确实抱怨,错误说"Child不能覆盖method2()",这非常令人困惑,因为我以为我试图隐藏一个方法.
问题2:不应该是"孩子不能隐藏方法2()"?
编辑开始:我很清楚这里没有重写,但正如上面提到的规范所指出的那样:修饰符final会阻止方法被覆盖或隐藏,这就是我把它放在标题中的原因.:编辑结束
我有一些函数会在失败时返回不同的错误类型。
首先,我有一个构建器,其中包含此方法:
#[derive(Debug)]
pub enum BuilderError {
ElementMissing(&'static str),
}
pub fn spawn(self) -> Result<ServiceStatus, BuilderError>
Run Code Online (Sandbox Code Playgroud)
所以它会BuildError在失败时返回一个。
现在,我有另一个函数会返回另一个错误:
#[derive(Debug)]
pub enum XmlError {
XmlCreationFailed(writer::Error),
ConversionToUtf8(FromUtf8Error),
}
pub fn create_xml(service_status: super::ServiceStatus) -> Result<String, XmlError>
Run Code Online (Sandbox Code Playgroud)
这个想法是我使用构建器创建一个ServiceStatus对象并使用它来创建一个带有create_xml函数的 XML 字符串。
为此,我有以下代码:
#[derive(Debug)]
pub enum WebserviceError {
XmlError(XmlError),
BuilderError(BuilderError),
}
impl std::error::Error for WebserviceError {
...
}
impl From<XmlError> for WebserviceError {
fn from(error: XmlError) -> WebserviceError {
WebserviceError::XmlError(error)
}
}
impl From<BuilderError> for WebserviceError {
fn from(error: BuilderError) …Run Code Online (Sandbox Code Playgroud) 偶然地,我发现您可以在没有编译器抱怨的情况下执行此操作:
extension Date {
var timeIntervalSinceNow: TimeInterval {
return 1000
}
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这实际上评估为1000:
Date().timeIntervalSinceNow
Run Code Online (Sandbox Code Playgroud)
因此,我尝试在自己的课堂上这样做:
class A {
var a: String {
return "A"
}
}
extension A {
var a: String {
return "a"
}
}
Run Code Online (Sandbox Code Playgroud)
我观察到这不会通过协议影响原始成员的使用,这是预期的隐藏行为:
extension Date {
var description: String {
return "XXXX"
}
}
let date: CustomStringConvertible = Date()
date.description // normal date
Date().description // "XXXX"
Run Code Online (Sandbox Code Playgroud)
您能解释为什么会出现子弹头现象吗?