小编Mat*_*rog的帖子

Java中的@XmlElementRefs和@XmlElementRef注释

有些人可以向我解释一下是做什么的

@XmlElementRefs
Run Code Online (Sandbox Code Playgroud)

@XmlElementRef
Run Code Online (Sandbox Code Playgroud)

注释在Java中意味着什么是它们的用途..

编辑: @skaffman

好吧,假设我有一个这样的集合

@XmlElementRefs({
    @XmlElementRef(name="ElementA", type=ClassA),
    @XmlElementRef(name="ElementB", type=ClassB) }
)

List<Object> items;
Run Code Online (Sandbox Code Playgroud)

现在我如何访问此列表中的每个元素?以下代码是否正确?

for (int j = 0; j < items.size(); ++j) {
    if (items.get(i).getClass().equals(ClassA)) {
        // perform ClassA specific processing:
    } else if (items.get(i).getClass().equals(ClassB)) {
        // perform ClassB specific processing:
    }
}
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?有没有更好的方法来执行每个类特定的处理?我的意思是有办法避免这些if else结构吗?

java xml jaxb

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

Eclipse键盘快捷键:"alt + shift +"与"shift +"与"ctrl + alt +"等. - 是否存在底层逻辑?

关于Eclipse中的键盘快捷键有很多关于SO的问题,但我总是想知道是否存在一个基础逻辑来决定哪些快捷键是ctrl+ alt+ [某些字母],哪些只是ctrl+ [某些字母]显然需要使用各种组合,因为键盘上只有很多键,但为什么,例如,"添加导入" ctrl+ shift+ m,而"提取方法"是alt+ shift+ m,而不是另一种方式?

我认为如果这些决策存在一些潜在的逻辑,那么它将更容易记住更多的快捷方式,而无需通过巨大的右键单击菜单来查找它们,我也不会经常使用错误的方法.

eclipse keyboard-shortcuts

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

为什么Jersey的UriBuilder.build方法编码#'和%',但不是/?

我有一个相当典型的REST API,除了资源的id不是整数,而是字符串,通常包含/字符.因此,如果客户的ID是string/with/slashes该客户的URI应该是http://localhost/customers/string%2Fwith%2Fslashes.返回客户列表时,我想用UriBuilder构造URI,这样我就可以把它放在ATOM风格的链接元素的href中.但它不太有效; 这是一个小测试类,显示我的意思:

@Path("/customers")
public class JerseyTest {

  @Path("{id}")
  public Customer getCustomer(@PathParam("{id}") String id) {
    return null;
  }

  public static void main(String[] args) {
    buildURI("string#with#hashes"); // => http://localhost/customers/string%23with%23hashes
    buildURI("string/with/slashes"); // => http://localhost/customers/string/with/slashes
  }

  public static void buildURI(String id) {
    UriBuilder builder = UriBuilder.fromUri("http://localhost");
    builder.path(JerseyTest.class).path(JerseyTest.class, "getCustomer");
    URI uri = builder.build(id);
    System.out.println(uri);
  }
}
Run Code Online (Sandbox Code Playgroud)

#太棒了,我们编码为我所期望的,但/我们做不.我尝试使用builder.build(URLEncoder.encode(id)),但随后UriBuilder编码了%,所以你得到了.../string%252Fwith%252Fslashes!

在我看来,不一致的,它编码#%而不是/,但我怀疑是有很好的理由对此我没有看到.所以我的问题是:

  1. 我怎样才能得到UriBuilder给我.../string%2Fwith%2Fslashes …

rest jax-rs urlencode jersey

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

是共享库/ dll中的全局变量,跨进程共享

我正在开发一个共享库(.so)和DLL.我有一个全局变量,它在多个线程中更新.所以我有互斥锁用于同步.

我不清楚共享库中的全局数据是否跨进程共享.如果是,那么我需要使用信号量进行同步.据我所知,全局变量是数据段的一部分,所以我想了解dll如何跨进程管理全局数据.任何格式和细分的信息都会有所帮助.

谢谢.

dll shared-libraries

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

JUnit理论:为什么我不能使用列表(而不是数组)作为DataPoints?

我已经开始使用新的(ish)JUnit Theories功能来参数化测试.如果您的理论设置为采用例如Integer参数,则Theories测试运动员会选择Integer标记为@DataPoint:

@DataPoint
public static Integer number = 0;
Run Code Online (Sandbox Code Playgroud)

以及Integer数组中的任何s:

@DataPoints
public static Integer[] numbers = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)

甚至返回数组的方法,如:

@DataPoints 
public static Integer[] moreNumbers() { return new Integer[] {4, 5, 6}; };
Run Code Online (Sandbox Code Playgroud)

但不是Lists.以下不起作用:

@DataPoints 
public static List<Integer> numberList = Arrays.asList(7, 8, 9);
Run Code Online (Sandbox Code Playgroud)

编辑:看起来也不支持其他集合,因为这不起作用.

@DataPoints 
public static Collection<Integer> numberList = new HashSet<Integer>() {{
  add(7);
  add(8);
  add(9);
}};
Run Code Online (Sandbox Code Playgroud)

我做错了什么,或做Lists,Sets等真的不行吗?它是一种有意识的设计选择,不允许使用Collections作为数据点,还是只是一个尚未实现的功能?是否有计划在未来的JUnit版本中实现它?

(我目前使用的是4.8.1版本,而最新版本是4.8.2,但看起来 …

junit unit-testing

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

确定Javascript对象有多少个字段

我有一个Javascript对象,我试图用作"hashmap".键总是字符串,所以我认为我不需要像SO问题中描述的那样复杂的东西.(我也不希望密钥的数量超过10,所以我并不特别关注查找是O(n)与O(log n)等.)

我想要的内置Javascript对象似乎没有的唯一功能,是一种快速的方法来计算对象中的键/值对的数量,就像Java的Map.size返回的那样.当然,你可以这样做:

function getObjectSize(myObject) {
  var count=0
  for (var key in myObject)
    count++
  return count
}
Run Code Online (Sandbox Code Playgroud)

但这似乎有点hacky和迂回.是否有"正确的方法"来获取对象中的字段数量?

javascript size map

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

Eclipse存储哪些文件是"派生"的信息?

当您更改Eclipse项目的类路径时,.classpath文件会更改,以便在将项目发送给其他人(包括.classpath文件)时,它们具有相同的类路径.但是,当你切换到"派生"的资源,存在或者没有变化.project.classpath.那么Eclipse在哪里存储有关哪些文件和文件夹的派生信息?

编辑:我发现:" 当前派生状态存储在与工作区树文件中的每个资源相关联的标志整数内的单个位 ",但是如果有人可以更精确地解释存储该标志整数的位置,以及如何更改它,这将非常感激.

eclipse

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

在Ruby中将参数命名为局部变量

在使用方法的命名参数时,我发现自己经常在Ruby中编写我认为不必要的代码.

以下面的代码为例:

def my_method(args)
  orange = args[:orange]
  lemon = args[:lemon]
  grapefruit = args[:grapefruit]

  # code that uses 
  # orange, lemon & grapefruit in this format which is way prettier & concise than 
  # args[:orange] args[:lemon] args[:grapefruit]

  puts "my_method variables: #{orange}, #{lemon}, #{grapefruit}" 
end
my_method :orange => "Orange", :grapefruit => "Grapefruit"
Run Code Online (Sandbox Code Playgroud)

我真的不喜欢这段代码的是我必须接受args并将值传递给局部变量,这些变量与DRY原则相反,并且通常占用我的方法中的空间.如果我不使用局部变量并且只使用args [:symbol]语法引用所有变量,那么代码就会变得有些难以理解.

我已经尝试过解决这个问题,但是我不知道如何在方法范围内使用eval或使用任何其他技术来定义局部变量.以下是下面的许多尝试之一,这会导致错误

def my_method_with_eval(args)
  method_binding = binding
  %w{ orange lemon grapefruit}.each { |variable| eval "#{variable} = args[:#{variable}]", method_binding; }

  # code that uses 
  # orange, lemon & grapefruit in …
Run Code Online (Sandbox Code Playgroud)

ruby variables arguments

10
推荐指数
2
解决办法
1657
查看次数

如何在Java中使用HtmlUnit?

我正在尝试使用Java中的HtmlUnit登录网站.首先我输入用户名然后输入密码.之后我需要从下拉框中选择一个选项.输入用户和密码似乎有效,但当我尝试从下拉框中选择项目时,我收到错误.谁能帮我解决这个问题?我的代码如下:

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlOption;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSelect;


public class homePage {
  public static void main(String[] args) throws Exception {

    final WebClient webClient = new WebClient();
    final HtmlPage page = webClient.getPage("website name here");
    HtmlElement usrname = page.getElementByName("username");
    usrname.click();
    usrname.type("myusername");
    HtmlElement psswrd = page.getElementByName("password");
    psswrd.click();
    psswrd.type("mypassword");
    HtmlSelect select = (HtmlSelect) page.getElementById("cmbProducts");
    HtmlOption option = select.getOptionByValue("ITDirect");
    select.setSelectedAttribute(option, true);
    HtmlElement signin = page.getElementByName("SignIn");
    signin.click();
    System.out.println(page.getTitleText());
    webClient.closeAllWindows();
  }
}
Run Code Online (Sandbox Code Playgroud)

java htmlunit

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

当使用Eclipse和Egit时,我无法推送到上游

每次我试图推动我都会拒绝非快进.如果我从终端推出它工作得很好.

我正在使用Ubuntu Natty最新的eclipse Egit插件git https

我宁愿使用ssh,但我也无法使用ssh.

eclipse git github

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