我对JAXB有一个小问题,但是不幸的是我找不到答案。
我有一个Customer类,其中有两个字段name和city,映射是使用注释完成的,并且两个字段都标记为必填字段,并且不可为空。
@XmlRootElement(name = "customer")
public class Customer {
enum City {
PARIS, LONDON, WARSAW
}
@XmlElement(name = "name", required = true, nillable = false)
public String name;
@XmlElement(name = "city", required = true, nillable = false)
public City city;
@Override
public String toString(){
return String.format("Name %s, city %s", name, city);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我提交这样的XML文件时:
<customer>
<city>UNKNOWN</city>
</customer>
Run Code Online (Sandbox Code Playgroud)
我将收到两个字段都设置为null的Customer实例。
是否应该没有验证例外,或者我在映射中缺少某些内容?
为了解组,我使用:
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) unmarshaller.unmarshal(in);
Run Code Online (Sandbox Code Playgroud) 我正在尝试查看在第二课中调用所需内容的基础知识,因为教程和我正在使用的书现在使用用户输入使其过于复杂.
所以这就是我的尝试.首先是我的主类,第二个是我试图调用主要方法描述一个简单文本的类.
public class deck {
public static void main(String[] args) {
edward test = new edward();
System.out.print(test);
}
}
Run Code Online (Sandbox Code Playgroud)
其他课程:
public class edward {
public void message(int number) {
System.out.print("hello, this is text!");
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
如果你可以试着解释一下我在做什么,或者它是如何工作的,那将是一件好事.我正在努力解决这个问题,并且有点沮丧.
我了解 ESAPI 的用途,但我看到这两行在很多 ESAPI 示例中重复出现。有人可以解释一下这到底是做什么的吗?
ESAPI.encoder().canonicalize(inputUrl,false,false);
Run Code Online (Sandbox Code Playgroud) 我要尝试创建目录并将数据写入该文件。我正在尝试使用 java nio 更有效地编写文件。我的疑问是如何在下面写下它之后关闭它是我的代码。请给我建议。
这是创建目录和写入大型数据文件的正确方法 [200 kb]。
java.nio.file.Path path = java.nio.file.Paths.get(filePath);
try {
if (!java.nio.file.Files.exists(path)) {
java.nio.file.Files.createDirectories(path.getParent());
path = java.nio.file.Files.createFile(path);
path = java.nio.file.Files.write(path, data.getBytes());
} else {
java.nio.file.Files.write(path, data.getBytes("utf-8"),
java.nio.file.StandardOpenOption.CREATE, java.nio.file.StandardOpenOption.TRUNCATE_EXISTING);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
Run Code Online (Sandbox Code Playgroud) 我有我的应用程序类Rock,Paper,Scissors游戏.我的问题是,如果我赢了两次,或者计算机赢了两次,我需要让游戏停止生成,但它会继续前进一次.我怎么能纠正这个?
import javax.swing.JOptionPane;
public class RockPaperScissorsApp
{
public static void main(String args[])
{
String player1, winner;
int player2, gamesPlayed = 1, player1Wins = 0, player2Wins = 0;
do
{
RockPaperScissors myRock = new RockPaperScissors();
player1 = JOptionPane.showInputDialog(null,
"Please enter your choice, Rock, Paper or Scissors");
myRock.setPlayer1(player1);
myRock.compute();
winner = myRock.getWinner();
player2 = myRock.getPlayer2();
if(winner.equals("Player 1"))
{
if(player2 == 1)
{
JOptionPane
.showMessageDialog(null,
"Congratulations, you have beaten the computer! The computer chose Rock");
}
else if(player2 == 2)
{
JOptionPane
.showMessageDialog(null, …Run Code Online (Sandbox Code Playgroud) 反正是否有创建这种安排,而没有影响边界的String变量sh3?我真的很难过,我的Java知识几乎限于你在这里看到的内容,如果这有帮助吗?
System.out.println("###################################################");
System.out.println("# **** WEST END THEATRE BOOKING SYSTEM **** #");
System.out.println("# #");
System.out.println("# T I C K E T #");
System.out.println("# #");
System.out.println("# Show: "+sh3+" #");
System.out.println("# Theatre: Her Majesty's #");
System.out.println("# Price: 65 #");
System.out.println("###################################################");
Run Code Online (Sandbox Code Playgroud) 我们需要确定我们现在使用的是什么类型的 SAS(pc SAS 或 Server SAS)。有什么方法可以找出我们正在使用的 SAS,是指 PC SAS 还是 SAS Server?
我最近开始研究pubnub,我正在尝试使用相同的方法制作pub-sub应用程序.我的java和Subscriber的发布者都是javascript.
以下是java中的发布商代码:
Pubnub pubnub = new Pubnub("pub-c-key", "sub-c-key");
pubnub.hereNow("my_channel", cb);
Run Code Online (Sandbox Code Playgroud)
在我的Callable for Here现在我做了一个Sysout响应,我得到以下响应:
{"message":"OK","status":200,"uuids":[],"service":"Presence","occupancy":0}
Run Code Online (Sandbox Code Playgroud)
这是我的JS代码:
<script src=http://cdn.pubnub.com/pubnub.min.js ></script>
<script>(function(){
var pubnub = PUBNUB.init({
publish_key : 'pub-c-key',
subscribe_key : 'sub-c-key'
});
pubnub.subscribe({
channel : "my_channel",
message : function(m){ document.getElementById("my_item").innerHTML = m; },
connect : publish
});
function publish() {
pubnub.publish({
channel : "my_channel",
message : "Connected!"
});
}
})();</script>
Run Code Online (Sandbox Code Playgroud)
但是当我向频道发布内容时,我会将结果显示在执行脚本的网页上. pubnub.publish("my_channel","Offer!" , callback);
为什么现在这不适用于我的情况?任何帮助或领导都可以.我已阅读pubnub文档,但我无法得到它.
如何要求bot向另一个与bot接收命令不同的通道(特定通道)发送消息?
假设 bot!ban @xxx在 channel 中接收消息#a,如果操作完成,bot 发送ban to user @xxx is given到 channel #b。
代码Main.java:
import net.dv8tion.jda.core.*;
public class Main {
private static String token = "NDk0MjI2Mjk2OTY5MjMyMzk0.DowgCA.j0sQHnBV3wm70rzz7Q78rX0NVPU";
public static void main(String[] args) throws Exception{
try {
JDA api = new JDABuilder(AccountType.BOT).setToken(token).build();
api.addEventListener(new MyEventListner() );
} catch (Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
代码MyEventListner.java:
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.MessageChannel;
import net.dv8tion.jda.core.entities.Role;
import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
public …Run Code Online (Sandbox Code Playgroud) 为了从不同用户中删除角色,我使用以下代码行:
Member member = e.getMember();
Guild guild = member.getGuild();
for (Role role : guild.getRoles()) {
System.out.println("getting em!");
System.out.println(role.getId());
if (role.getId().equals("496415978603675658")) {
System.out.println("he has it, boss");
guild.getController().removeSingleRoleFromMember(member, role)
.complete();
guild.getController().addSingleRoleToMember(member, jda.getRoleById("496415995569766410"))
.complete();
}
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但问题是它只适用于 Member 对象 ( e.getMember),否则我不知道如何检索 Member 对象。我将另一个用户存储为用户对象,但我不知道如何将他转换为成员。