小编Dan*_*ely的帖子

Java泛型类型参数隐藏

我正在定义一个类:

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)

现在的问题是,如果我重新提名内IJ,我不知道这IJ实际上是同一类型.

java generics warnings

5
推荐指数
1
解决办法
6434
查看次数

VSTO项目安装了多个版本的办公室

我目前安装了Office 2010,并且正在尝试帮助仍在使用VSTO解决方案的同事.由于我的视觉工作室副本将项目文件更新为指向O2010 dll,因此这变得一团糟.如果我要在2010年旁边安装Office 2007,我将能够在没有升级向导的情况下打开解决方案,或者是我唯一的选择,对解决方案进行重大架构更改或者回到O2007,直到我的雇主将O2010作为新标准.

vsto visual-studio-2010

5
推荐指数
1
解决办法
2621
查看次数

C#相当于"Not MyEnum.SomeValue"

我正在尝试将一些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)

c# vb.net vb.net-to-c#

5
推荐指数
1
解决办法
634
查看次数

如何在rails(瘦或webrick服务器)中设置请求超时

当我将大文件上传到rails服务器时,我总是收到请求超时错误.我不知道在哪里更改请求超时值.

timeout ruby-on-rails request

5
推荐指数
1
解决办法
9417
查看次数

从文本文件中删除多余的空格

我有以下格式的文本文件数:

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)

java regex newline removing-whitespace

5
推荐指数
1
解决办法
2万
查看次数

在标记文本中替换占位符(变量)的最简单方法?

我需要一种开放式格式来以通用方式编写故事(使用占位符/变量).为了使故事具体化,我想设置一个键/值对列表,并在发布时应用它们.我还想将样式与内容分开,以便我可以轻松地发布到网页,pdf等.

例: @varname@ is a great place.

我选择了Markdown来解决内容/样式分离,但我不知道一种简单的方法来参数化文本的某些部分,并在使用像pandoc这样的工具生成html/pdf输出时填写它们.

有什么建议?这可以通过降价来实现,还是有合适的降价扩展?

markdown placeholder pandoc

5
推荐指数
1
解决办法
4107
查看次数

MFC 对话框边框填充从 VS2010 切换到 2012 或更高版本后发生变化

在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)

c++ mfc visual-studio-2010 visual-studio-2012

5
推荐指数
1
解决办法
2188
查看次数

Java - 隐藏覆盖和修改器最终

我找不到像我这样的问题,所以我希望这不是一个重复的问题.

再次,这是关于覆盖和隐藏.我想 - 但我可能错了 - 我理解两者.

以下代码按预期运行,两种方法都已隐藏.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会阻止方法被覆盖或隐藏,这就是我把它放在标题中的原因.:编辑结束

java methods overriding final method-hiding

5
推荐指数
1
解决办法
1416
查看次数

在没有 map_err 的情况下使用 and_then 与不同的结果错误类型

我有一些函数会在失败时返回不同的错误类型。

首先,我有一个构建器,其中包含此方法:

#[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)

rust rust-result

5
推荐指数
2
解决办法
1775
查看次数

在扩展中重新声明成员会隐藏原始成员(有时*)。为什么?

偶然地,我发现您可以在没有编译器抱怨的情况下执行此操作:

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)
  • 并且无法编译:“无效的'a'重新声明”。

我观察到这不会通过协议影响原始成员的使用,这是预期的隐藏行为:

extension Date {
    var description: String {
        return "XXXX"
    }
}

let date: CustomStringConvertible = Date()
date.description // normal date

Date().description // "XXXX"
Run Code Online (Sandbox Code Playgroud)

您能解释为什么会出现子弹头现象吗?

member-hiding swift

5
推荐指数
1
解决办法
259
查看次数