我正在尝试阅读Amazon S3上可用的文件,因为问题解释了问题.我找不到已弃用的构造函数的替代调用.
这是代码:
private String AccessKeyID = "xxxxxxxxxxxxxxxxxxxx";
private String SecretAccessKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
private static String bucketName = "documentcontainer";
private static String keyName = "test";
//private static String uploadFileName = "/PATH TO FILE WHICH WANT TO UPLOAD/abc.txt";
AWSCredentials credentials = new BasicAWSCredentials(AccessKeyID, SecretAccessKey);
void downloadfile() throws IOException
{
// Problem lies here - AmazonS3Client is deprecated
AmazonS3 s3client = new AmazonS3Client(credentials);
try {
System.out.println("Downloading an object...");
S3Object s3object = s3client.getObject(new GetObjectRequest(
bucketName, keyName));
System.out.println("Content-Type: " +
s3object.getObjectMetadata().getContentType());
InputStream input = …Run Code Online (Sandbox Code Playgroud) 我有一个JSP页面编码的页面ISO-8859-1.这个JSP页面有一个问题答案博客.我希望在Q/A发布期间包含特殊字符.
问题是JSP不支持UTF-8编码,即使我已将其更改ISO-8859-1为UTF-8.这些字符(~,%,&,+)正在问题.当我单独或使用任何字符的组合发布这些字符时,它null在数据库中是storinh ,当我在发布应用程序时删除这些字符时它工作正常.
任何人都能提出一些解决方案吗
我希望我班上的收藏限制为最多6个元素:
public class Foo
{
private ICollection bars;
public ICollection Bars
{
get { return this.bars; }
set
{
if (value != null && value.Count > 6)
{
throw new Exception("A Foo can only have up to 6 Bars."); // Which exception to throw?
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
抛出这种情况的正当例外是什么?
根据文件,ArgumentException应抛出:
当提供给方法的其中一个参数无效时.
但这不是一种方法.
ArgumentOutOfRange 应抛出:
当参数的值超出被调用方法定义的允许值范围时.
这意味着访问集合大小之外的元素,而不是集合太大时.
还有其他例外情况适合这种情况吗?
我在一些网页上显示谷歌的图表.但我无法保证我的客户可以通过网络访问Google:客户端计算机将与我的网络服务器(可以访问Google)位于同一个局域网中,但我不保证所有客户端都可以访问局域网以外的地址.
我想使用Google Charts向可以访问它的客户端显示数据,并向那些不能访问它的人显示纯HTML表格.
我尝试将变量设置为false,并在加载Google Visualization API时调用的方法中将其更改为true:
var canAccessGoogleVisualizationVar = false;
google.load('visualization', '1', {packages: ['corechart'], callback: canAccessGoogleVisualization});
function canAccessGoogleVisualization()
{
canAccessGoogleVisualizationVar = true;
}
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.
如何从客户端了解Google Visualization是否可访问?
更新:上面的代码不起作用,因为下面的代码(我之前没有发布,因为我认为没有意义):
google.setOnLoadCallback(drawVisualization);
function drawVisualization()
{
// Check if Google Visualization is loaded
if (!canAccessGoogleVisualizationVar) {
alert('Can't access Google Visualization');
}
// The following code can be any of the samples from Google (see http://code.google.com/apis/ajax/playground/?type=visualization#pie_chart).
var data = new google.visualization.DataTable();
// Add columns and values to data
...
// Call new google.visualization.AnyChartBuilderFromTheAPI(<element>).draw(data);
}
Run Code Online (Sandbox Code Playgroud)
我发现我的代码没有工作,因为,如果canAccessGoogleVisualizationVar …
我通过反射调用方法,其返回类型是通用的.我不希望返回值为null,所以在这种情况下,我想分配该泛型类型的默认值.
也就是说,在通过反射调用方法之后,我想执行这样的事情:
T resultNotNull = (T) reflectionMethodThatCanReturnNull.invoke(anObject);
// If it's null, let's assign something assignable.
if (resultNotNull == null) {
if (resultNotNull.getClass().isAssignableFrom(Long.class)) {
resultNotNull = (T) Long.valueOf(-1);
} else if (resultNotNull.getClass().isAssignableFrom(String.class)) {
resultNotNull = (T) "NOTHING";
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当然,如果'resultNotNull == null',我们不能在没有异常的情况下调用'resultNotNull.getClass()'.
有关如何根据泛型类型分配默认值的任何想法?
整个代码将是这样的:
public class ReflectionTest {
public class Class1ok {
public Long method () { return Long.valueOf(1); }
}
public class Class1null {
public Long method () { return null; } // It …Run Code Online (Sandbox Code Playgroud) 我有一个大型应用程序从配置文件中读取一些参数.
我正在为一个类编写单元测试,该类在使用参数和从配置文件读取的值执行某些操作后生成结果:
internal static class Password
{
private static readonly byte PASSWORD_PRIVATE_KEY
= ConfigFile.ReadByte("PASSWORD_PRIVATE_KEY");
public static byte Generate(byte passwordPublicKey);
}
Run Code Online (Sandbox Code Playgroud)
在我的单元测试,我知道该值Password.Generate()方法应该返回给定PASSWORD_PRIVATE_KEY和PASSWORD_PUBLIC_KEY.但是我喜欢PASSWORD_PRIVATE_KEY在单元测试类中定义值,而不是在配置文件中:
[TestMethod]
public void PasswordGenerate_CalculatedProperly()
{
byte passwordPublicKey = 0x22;
Password_Accessor.PASSWORD_PRIVATE_KEY = 0xF0;
byte expectedGenerated = 0xAA;
byte generated = Password_Accessor.Generate(passwordPublicKey);
Assert.AreEqual(expectedGenerated, generated);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法可以编写private static readonly直通代码,所以我不必依赖任何配置文件进行测试?
我最近在C#中发现了铸造操作员.现在我知道我可以覆盖运算符以允许:
byte b1 = new Foo();
byte b2 = (byte) new Foo();
Run Code Online (Sandbox Code Playgroud)
但是从Foo消费者的角度来看,我不知道哪种更容易理解可以进行转换.我特别考虑过将要/将来必须维护我的代码的初级程序员(或者如果我几天前看到这个,我会想到的).
一方面隐式投射看起来有点奇怪.它看起来像分配不同的,不兼容的类型.并且IDE的intellisense不会告诉你有一种方法可以在没有编译器抱怨的情况下做到这一点.
另一方面,显式转换看起来像强制转换.好吧,这是告诉编译器的一种方式"我知道我在做什么,不要发牢骚".但是,如果程序员无法访问Foo代码(或者不知道C#中存在转换操作符),那么如何执行转换并执行某些操作?
哪种类型的铸件在哪种情况下是首选的?还有第三种方式吗?
好的,我确实理解Java Reflection的工作原理.但我正在做的事情与反思教程中显示的有点不同.现在我想要的是调用一个方法,该方法通过使用反射调用方法返回.
class Foo{
private String str = "";
public Foo(String str){
str = this.str;
}
public void goo(){
System.out.println(this.str);
}
}
class Bar{
public Foo met(String str){
return new Foo(str);
}
}
class Hee{
public static void main(String [] args) throws Exception{
Class cls = Class.forName("Bar");
Object obj = cls.newInstance();
Class [] types = {String.class};
String [] arr = {"hello"};
Method method = cls.getMethod("met",types);
Object target = method.invoke(obj, arr);
target.goo(); //here where the error occurs
// 123456
}
} …Run Code Online (Sandbox Code Playgroud) java ×4
c# ×3
reflection ×2
amazon-s3 ×1
aws-sdk ×1
casting ×1
collections ×1
deprecated ×1
exception ×1
generics ×1
javascript ×1
jsp ×1
unit-testing ×1
utf-8 ×1