小编Mic*_*ael的帖子

如何在备忘录中编辑文字?

我想使用过程Delete(Memo.Text,index,count)(或类似的Insert).但我收到消息'常量对象不能作为var参数传递'.我知道我可以选择文本并使用这个程序与Seltext.但这种方式有点不舒服.还有什么比这更容易了

delphi text lines tmemo

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

使用泛型编译失败?

我写了以下代码,它的工作原理非常好.问题是当我将类更改A为Generics时,A<T>它无法编译.

public class A {
    class B {
    }

    static void m(B i) {
    }

    static class C extends B {
        C() {
            new A().super();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

当我更改AA<T>编译失败并出现以下错误B.

无法对非静态类型B进行静态引用

public class A<T> {
    class B {
    }

    static void m(B i) {
    }

    static class C extends B {
        C() {
            new A().super();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我为什么它在第一种情况下工作正常并且第二次失败

java generics core

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

为什么以下代码不为变量创建新值?

class Cube{
    int side;
    int area = side * side;
}

public class Chronos{
    public static void main(String[]args) {
        Cube a = new Cube();
        a.side = 2;
        System.out.println(a.area);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么它输出"0"而不是将给定变量乘以 a.side=2它自己并给出a.area=4.我的思维过程是,它会看到打印的命令a.area,检查Cube并看到它a.side本身已经确定的倍增.

java

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

是否可以使用方法引用和接口的静态方法?

这是我的第一个代码:

public class MethodReference {
    public static void main (String []args) {
        Stream<String> s = Stream.of("brown bear", "grizzly");
        s.sorted(Comparator.reverseOrder()).forEach(System.out::print);
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:灰熊熊

这是我的第二个代码:

public class MethodReference {
    public static void main (String []args) {
        Stream<String> s = Stream.of("brown bear", "grizzly");
        s.sorted(Comparator::reverseOrder()).forEach(System.out::print);
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:编译器错误

我的问题:为什么第二个代码中存在编译器错误?我不能将方法参考用于功能接口的静态方法吗?

我知道我不能使用方法引用和函数接口的默认方法.我知道我可以在5种情况下使用类的方法引用:

  • 类:: STATICMETHOD

  • 类:: instanceMethod

  • 例如:: instanceMethod

  • 类::新

功能界面

  • 接口:: abstractMethod

非常感谢!

java lambda method-reference

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

这个Gosu代码中的反斜杠是做什么的?

我对Gosu不太了解,所以这段代码使我感到困惑。我已经用谷歌搜索,等等,但是都无济于事。此代码段中的反斜杠是做什么的?

GET_STUFF.execute(\ -> {
      var gig = withPackagedGig(request.id, request.signature, \ k -> {
        k.addItem("Log_RetrievedGig");
        return k;
      });
      myObj = toObj(gig);
    })
Run Code Online (Sandbox Code Playgroud)

jvm gosu

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

是否存在表示 instanceof 运算符的现有谓词?

我正在使用 Java 8 的 lambda 表达式来分区列表(使用.collect(Collectors.partitioningBy(...))),我需要我的分区标准是元素是否是给定类的实例。

做如下工作

list.stream().collect(Collectors.partitioningBy(elt -> elt instanceof EltType))
Run Code Online (Sandbox Code Playgroud)

但是是否存在InstanceOf可以通过方法引用使用的现有“ ”谓词?

java java-8

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

为什么 instanceof 模式匹配需要标识符?

在Java的instanceof模式匹配中,使用附加标识符来缩小类型:

Object o = "test";
if (o instanceof String s) {
    System.out.println(s.length()); // s is of type String
}
Run Code Online (Sandbox Code Playgroud)

为什么有必要?JEP似乎没有证明其合理性,但我确信这是有原因的。以下有什么不好的地方?

Object o = "test";
if (o instanceof String) {
    System.out.println(o.length());
}
Run Code Online (Sandbox Code Playgroud)

TypeScriptKotlin可以做类似的事情,而无需另一个标识符。

我猜这是一个向后兼容性的问题——Java 的怪癖通常是这样——但我想不出一个可以证明这一点的例子。

我唯一能想到的是,有人可能编写了类似于第二个示例预模式匹配的内容,并依赖它来编译,但这似乎是一个薄弱的理由。

java java-16

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

在 Delphi 2010 备忘录中看不到 UTF8 字符

我使用下面的代码将用 Winword 制作的 UTF8 文件读入 Tmemo(尝试了所有 2 种方法)。该文件包含 IPA 发音字符。对于这些字符,我只看到正方形。我尝试了不同版本的 tmemo.font.charset,但没有帮助。

我能做些什么?

彼得

// OD is an TOpenDialog

procedure TForm1.Load1Click(Sender: TObject);

{
var fileH: textFile;
    newLine: RawByteString;

begin
   if od.execute (self.Handle) then begin
      assignFile(fileH,od.filename);
      reset(fileH);
      while not eof(fileH) do begin
        readln(fileH,newLine);
        Memo1.lines.Add(UTF8toString(newLine));
      end;
      closeFile(fileH);
   end;
end;
}


var
  FileStream: tFileStream;
  Preamble: TBytes;
  memStream: TMemoryStream;
begin
  if od.Execute then
  begin
    FileStream := TFileStream.Create(od.FileName,fmOpenRead or fmShareDenyWrite);
    MemStream := TMemoryStream.Create;

    Preamble := TEncoding.UTF8.GetPreamble;
    memStream.Write(Preamble[0],length(Preamble));
    memStream.CopyFrom(FileStream,FileStream.Size);
    memStream.Seek(0,soFromBeginning);

    memo1.Lines.LoadFromStream(memStream);

    showmessage(SysErrorMessage(GetLastError));

    FileStream.Free;
    memStream.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi utf-8 tmemo

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

AssertJ:声明列表是按逆序还是降序排序

我正在使用AssertJ进行测试,并且注意到有一种检查a List<T>是否排序的方法:

public static <T> void sorted(final List<T> actual) {
    try {
        assertThat(actual).isSorted();
    } catch (AssertionError e) {
        LOGGER.error(e.getMessage(), e);
        throw e;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法检查列表是否按降序排列?

我知道番石榴提供了,Ordering.natural().reverse().isOrdered(values)但是我想利用AssertJ的assert消息,因为它确实对调试很有帮助,例如

group is not sorted because element 5:
 <"4000366190001391">
is not less or equal than element 6:
 <"4000206280001394">
group was:
 <["4000206280001363",
    "4000206280001364",
    "4000206280001365",
    "4000206280001373",
    "4000206280001388",
    "4000366190001391",
    "4000206280001394",
    "4000366190001401",
    "4000206280001403",
    "4000206280001405",
     ....]>
Run Code Online (Sandbox Code Playgroud)

java sorting list assertj

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

字段vs字段和新对象

我想知道这两种情况之间的差异是什么:

class Cell
{
    Messages msg;

    public void getMessage()
    {
        msg.getMessage();
    }
}
Run Code Online (Sandbox Code Playgroud)

和:

class Cell
{
    Messages msg = new Messages();

    public void getMessage()
    {
        msg.getMessage();
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道在第一个例子中我只声明了字段,而在第二个例子中我声明了字段,对象和指定对象到字段.但是在这两种情况下我都可以.getMessage()Cell课堂上使用方法,那么什么是差异?我应该使用什么?

java variables field object

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

标签 统计

java ×7

delphi ×2

tmemo ×2

assertj ×1

core ×1

field ×1

generics ×1

gosu ×1

java-16 ×1

java-8 ×1

jvm ×1

lambda ×1

lines ×1

list ×1

method-reference ×1

object ×1

sorting ×1

text ×1

utf-8 ×1

variables ×1