小编Kev*_*sen的帖子

C#WPF-仅允许某些文件扩展名

我有一个OpenFileDialog,我只想允许.txt用户使用有效文件。

我知道我可以添加FilterOpenFileDialog像这样:

var dialog = new OpenFileDialog();
dialog.DefaultExt = ".txt";
dialog.Filter = "Text Files (*.txt)|*.txt";
var result = dialog.ShowDialog();
// Do something with the result
Run Code Online (Sandbox Code Playgroud)

但是问题是,我仍然可以直接在中说一些类似"test.jpg"的内容OpenFileDialog,然后打开它,然后上传此.jpg文件。(显然,稍后某个地方出了问题,但这暂时不重要。)我只想知道如何限制用户仅添加“ .txt”文件,没有别的吗?(通过直接在中进行验证OpenFileDialog,而不是稍后再进行验证。)

.net c# wpf file openfiledialog

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

Collection.sort不适用于我的数组

我创建了自己的MyArrayList,但无法对其进行排序.一个普通的Arraylist可以分类,Collections.sort但我的不能.有人可以告诉我哪里错了吗?

import java.util.*;

public class TestMyArrayList
{
    public static void main(String[] args){
        String[] subjects = {"EIE320", "EIE558", "EIE375", "EIE424"};
        Integer[] marks = {90,85,70,80};
        MyArrayList<String> sList = new MyArrayList<String>(subjects);
        Collections.sort(sList);
        sList.print();
        MyArrayList<Integer> mList = new MyArrayList<Integer>(marks);
        Collections.sort(mList);
        mList.print();
    }
}

public class MyArrayList<E> extends ArrayList<E>
    implements List<E>
{    
    private List<E> data;

    public MyArrayList()
    {
    }

    public MyArrayList(E[] inputdata){
        super();
        data = new ArrayList<E>();
        for(E e:inputdata){
            data.add(e);
        }
    }

    public void print(){
        for(Iterator iter = data.iterator();iter.hasNext();){
            System.out.print(iter.next() + " "); …
Run Code Online (Sandbox Code Playgroud)

java arrays sorting collections list

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

为什么 == 和 .equals 都不适用于 Java 中的字节数组?

为什么 == 不适用于 Java 中的字节数组?

例如:

    byte[] a = new byte[]{1,2,3,4};
    byte[] b = new byte[]{1,2,3,4};

    a == b //false
    a.equals(b) //false
    Arrays.equals(a,b) //true
Run Code Online (Sandbox Code Playgroud)

java arrays

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

Java字符串数组差异

我现在很无聊,正在做一些Java练习测试,因为我已经用Java编程了很长时间.在一个问题之后,我现在想知道以下几点之间的区别:

String[] test1 = { "A", "B", "C" };
String[] test2 = new String[]{ "A", "B", "C" };
String test3[] = { "A", "B", "C" };
String test4[] = new String[]{ "A", "B", "C" };
Run Code Online (Sandbox Code Playgroud)

当我在Java IDE中输入它时,我没有收到任何错误.我还没有尝试编译它们中的任何一个(虽然我过去主要使用test2自己,所以我知道一个有效).

  • 那么,这些都是编译吗?
  • 如果是的话,有什么不同(如果有的话)?
  • (test1性能更好,test2因为你没有进行新的String[]实例化,或者无论如何都在幕后完成?)
  • (如果test1与以下内容相同test3:为什么在Java中存在test3test4存在,如果它test1test2?相同?是否有任何情况下在[]字段名称后面使用优先于类型后面?)
  • (除了这四种之外还有更多(几乎相似)的变种吗?)
  • (和其他问题一样.)

只想知道好奇心.我猜每天都会学到新东西.

java arrays object

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

Java - 将私有静态字段复制到局部变量的反射

private Methods:我知道如何:

  • 运行不带参数的私有 void 方法
  • 使用任意数量和类型的参数运行私有 void 方法
  • 运行不带参数且具有任何类型返回类型的私有返回方法
  • 使用任意数量和类型的参数以及任意类型的返回类型运行私有返回方法

private Fields:我知道如何:

  • 设置任意类型的私有字段
  • 设置任意类型的私有静态字段
  • 设置任何类型的私有最终字段
  • 设置任何类型的私有静态最终字段

private Fields:我知道如何:

  • 获取任意类型的私有字段
  • 获取任何类型的私有最终字段

private Constructors:我知道如何:

(可用于在单模式中创建私有构造函数的新实例,同时保持实例字段为空)

  • 创建一个不带参数的私有构造函数的新实例
  • 使用任意数量和类型的参数创建私有构造函数的新实例

我不知道的和我想知道的:

  • 获取任何类型的私有静态字段并将其设置为本地(非静态)变量
  • 获取任何类型的 private static final 字段并将其设置为本地(非静态)变量

我应该在代码中更改什么以及如何更改?

TestMethodsClass 中的这部分:

if(Modifier.isStatic(field.getModifiers())){
    Field modifiersField = Field.class.getDeclaredField("modifiers");
    modifiersField.setAccessible(true);
    modifiersField.setInt(field, field.getModifiers() & ~Modifier.STATIC);
}
Run Code Online (Sandbox Code Playgroud)

或者我在单元测试类中进行的调用:

// Getting private STATIC String myString of the class MyClass and set it to a local variable
// public static call equivalent: String localString = myClassInstance.myString;
// public Getter …
Run Code Online (Sandbox Code Playgroud)

java reflection static field private

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

在Java中将int(字节)转换为单字符字符串的最简单方法

我有一个表示有效UTF-8字符的int(->字节),并且我想在中打印该单个字符System.out.println

我知道以下两种将表示UTF-8字节的int转换为单字符字符串的方法:

int myByte = ...; // For example 67

String sMyByte = String.valueOf((char)((byte)myByte & 0xFF)); // 67 will become "C"

String sMyByte = new String(new byte[]{ (byte)myByte }, StandardCharsets.UTF_8); // 67 will become "C"
Run Code Online (Sandbox Code Playgroud)

两者似乎有点长/不可读,我想知道是否存在一种更简便的方法来将表示UTF-8字节的int转换为单字符字符串。如果没有,我可能会使用上面两个中的第一个。

java string byte casting character

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

从字符串中获取2个字符

我有一个字符串FILENAME,实际上在foreach循环中保存文件名.字符串将是这样的:

MyFile_TEST_INDIA_20160728
MyFile_TEST_AMERICA_20160728    
MyFile_TEST_GERMANY_20160728
Run Code Online (Sandbox Code Playgroud)

我需要获取国家/地区名称的前2个字符.我试过以下:

String rmtdir = Filename.substring(Filename.length() - 12, Filename.length() - 12);
System.out.println(rmtdir); 
Run Code Online (Sandbox Code Playgroud)

但通过使用它,我只能获得INDIA所需的数据.
对于其他国家/地区,我手动需要更新子字符串的第二部分,并考虑到国家/地区的扩展长度.

像美国和德国一样:

String rmtdir = Filename.substring(Filename.length() - 12, Filename.length() - 14);
Run Code Online (Sandbox Code Playgroud)

有没有办法转到起始索引并选择要选择的职位数?

java string substring talend

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

检查对象是否实现特定的通用接口

我有多个类(简化用于解释目的):

public class A : BaseClass,
    IHandleEvent<Event1>,
    IHandleEvent<Event2>
{
}

public class B : BaseClass,
    IHandleEvent<Event3>,
    IHandleEvent<Event4>
{
}

public class C : BaseClass,
    IHandleEvent<Event2>,
    IHandleEvent<Event3>
{
}
Run Code Online (Sandbox Code Playgroud)

在我的"BaseClass"中,我有一个方法,我想检查Child-class是否实现IHandleEvent了特定事件.

public void MyMethod()
{
    ...
    var event = ...;
    ...
    // If this class doesn't implement an IHandleEvent of the given event, return
    ...
}
Run Code Online (Sandbox Code Playgroud)

这个SO答案我知道如何检查对象是否实现了通用接口(implements IHandleEvent<>),如下所示:

if (this.GetType().GetInterfaces().Any(x =>
    x.IsGenericType && x.GenericTypeDefinition() == typeof(IHandleEvent<>)))
{
    ... // Some log-text
    return;
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何检查对象是否实现了SPECIFIC通用接口(implements IHandleEvent<Event1>).那么,如何在if中检查?

c# generics implementation types interface

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

比较java中的char变量

我会比较一个字符,但它实际上不起作用:

//...
System.out.print("PROCEED? (Y/N):\t");
line = in.nextLine();
ch = line.charAt(0);

while (ch != 'y' || ch != 'n' || ch != 'Y' || ch != 'N'){
    System.out.print("NON-VALID INPUT. TYPE Y-N:\t");

    line = in.nextLine();
    ch = line.charAt(0);
}
//...
Run Code Online (Sandbox Code Playgroud)

在我的终端上,当我按y或时n,结果是:

PROCEED? (Y/N): y
NON-VALID INPUT. TYPE Y-N:  y
NON-VALID INPUT. TYPE Y-N:  Y
NON-VALID INPUT. TYPE Y-N:  n
NON-VALID INPUT. TYPE Y-N:  r
NON-VALID INPUT. TYPE Y-N:  d
...
Run Code Online (Sandbox Code Playgroud)

java comparison char while-loop

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

我的二传手和吸气者的问题

我是java的新手.我的代码有些问题.当我开始写setter和getter时,我遇到了问题.这两个错误是:

参数getName的非法修饰符; 只有决赛是允许的

Void方法不能返回值

这是我的代码:

public class Profile {

    private String name;
    private String dayOfBirth;
    private String townOfResidence;
    private String counrtyOfResidence;
    private String nationality;
    private String listOfInterests;
    private Profile listOfFriends;

    public Profile(String name, String dateOfBirth, String townOfResidence, String
            counrtyOfResidence, String nationality, String listOfInterests,
            Profile listOfFriends){ 

        this.name = name;
        this.dayOfBirth = dateOfBirth;
        this.townOfResidence = townOfResidence;
        this.counrtyOfResidence = counrtyOfResidence;
        this.nationality = nationality;
        this.listOfInterests = listOfInterests;
        this.listOfFriends = listOfFriends;

        public String getName(){
            return name;
        }

        public String getDateOfBirth(){
            return dateOfBirth;
        }

        public …
Run Code Online (Sandbox Code Playgroud)

java

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

使用重写方法在java中继承

我在java中进行了关于继承的练习:

public class Gran {
  private int x;
  public Gran() {
    this.x = 68; 
  }
  public int age() {
    this.x = this.x+1; return this.x; 
  }
  @Override
  public String toString() {
    return "Gran " + age();
  }
}

public class Dad extends Gran {
  private int x;
  public Dad(){
    this.x = 41; 
  }
  @Override
  public String toString() {
    return "Dad " + age();
  }
}

public class Sis extends Dad {
  private int x;
  public Sis() {
    this.x = 17;
  } …
Run Code Online (Sandbox Code Playgroud)

java inheritance

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

如何生成不重复的随机数

我使用随机数,我正在生成0到7之间的随机数.但是有一个问题:随机数有时会重复前一个数字.
我按下按钮生成一个随机数; 所以当点击按钮我有时真的得到一个不同的随机数,但有时它开始重复数字.举个例子:

单击按钮,有时数字在0-7范围内重复,如:

1-3-4-3-6-3-5-5
正如你所看到的,3重复多次,5也有两次出现.

因此,有两种不同类型的重复.我写了下面的代码,它应该杀死第二次重复(重复5次):

int randomNumber;
do {
    randomNumber = random.nextInt(7 - 0 + 1) + 0;
} while (randomNumber == lastRandomNumber);
lastRandomNumber = randomNumber;
Log.d("RandomNumber","= "+randomNumber);
return randomNumber;
Run Code Online (Sandbox Code Playgroud)

现在我想要的是:

它跟踪最后一个随机数,但现在我想跟踪所有先前生成的随机数.但是我该怎么做呢?实现这一目标的最佳方式是什么?请指导我或分享一些代码.

java android

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