在我的一个Java项目中,由于Java处理(不)基元的方式,我被代码重复所困扰。 再次手动将相同的更改复制到四个不同的位置( int , long , float , double ) 之后 ,我第三次一次 又一次地逼近(?)来捕捉。 以各种forms,现在这个问题已经在StackOverflow上提出来了: 在Java中pipe理高度重复的代码和文档 处理原始types时如何避免重复? 将原始dynamic列表传递给Java方法 共识似乎汇聚到了两种可能的select: 使用某种代码生成器。 你能做什么? 这就是生活! 那么第二个解决scheme就是我现在正在做的事情,它正在慢慢地变得对我的理智危险,就像众所周知的酷刑技术一样 。 自从这些问题被问及Java 7出现以来,已经过去了两年。 因此,我希望有一个更简单和/或更标准的解决scheme。 Java 7是否有可能缓解这种情况下的压力 ? 在浓缩的变更摘要中我找不到任何内容,但是也许在某处有一些晦涩的新function? 虽然源代码生成是一种替代scheme,但我更喜欢使用标准JDKfunction集支持的解决scheme。 当然,使用cpp或其他代码生成器可以工作,但它增加了更多的依赖关系,并需要对生成系统进行更改。 似乎只有JDK支持的唯一的sorting代码生成系统是通过注释机制。 我设想一个处理器可以像这样扩展源代码: @Primitives({ "int", "long", "float", "double" }) @PrimitiveVariable int max(@PrimitiveVariable int a, @PrimitiveVariable int b) { return (a > b)?a:b; } 理想的输出文件将包含这个方法的四个要求的变化,最好与相关的Javadoc注释等。有没有一个注释处理器来处理这种情况? […]
我已经阅读了一大堆涉及XNA的教程(还有各种各样的版本),在绘制图元时我还是有点困惑。 一切似乎真的很复杂。 有人可以使用代码向我们展示在屏幕上绘制一行或两行代码的最简单的XNA实现吗? 也许有一个简单的解释(包括样板)? 我不是一个游戏程序员,我有一点XNA的经验。 我的最终目标是在屏幕上绘制一些线条,最终我将通过旋转等手段进行转换。 然而,对于这第一步..我需要简单地画线! 我记得在我古老的OpenGL日子里,用几个方法调用绘制一条线就相当简单。 我应该简单地恢复使用非托pipedirectx调用?
我需要创build一个数据传输对象,我将使用它来存储从数据库检索的logging。 在这个数据传输对象中,我需要声明一个数字字段。 对于哪一个更好 – int或Integer 如果我将字段定义为整型,那么如果我要从DB中检索超过2000条logging,将会因为“整型”types而对性能产生影响吗? 提前致谢。
我可以创build一个字面长的附加一个L值; 为什么我不能以某种类似的方式创build一个字面的短或字节? 为什么我需要使用一个inttypes的文字? 如果答案是“因为C中没有短文字”,那么为什么C中没有短文字? 这实际上并没有以任何有意义的方式影响我的生活。 写(短)0而不是0S或者什么是很容易的。 但不一致使我好奇; 当你深夜起来的时候,这是困扰你的事情之一。 有人在某个时候做出了一个devise决定,以便为某些原始typesinput文字,但不是为所有原始typesinput文字。 为什么?
有没有办法强制/限制传递给基元的types? (bool,int,string等) 现在,我知道你可以通过where子句将genericstypes参数限制为types或接口实现。 然而,这不符合基本法(AFAIK)的法案,因为它们并不都有共同之处(除了有人说的对象之前!:P)。 所以,我目前的想法是只是咬紧牙关,做一个大的switch语句,并抛出一个ArgumentException失败.. 编辑1: 只是为了澄清: 代码定义应该是这样的: public class MyClass<GenericType> …. 并实例化: MyClass<bool> = new MyClass<bool>(); // Legal MyClass<string> = new MyClass<string>(); // Legal MyClass<DataSet> = new MyClass<DataSet>(); // Illegal MyClass<RobsFunkyHat> = new MyClass<RobsFunkyHat>(); // Illegal (but looks awesome!) 编辑2 @Jon Limjap – 好点,和我已经考虑的东西..我敢肯定有一个通用的方法,可以用来确定types是一个值或引用types.. 这可能会立即删除很多我不想处理的对象(但是你需要担心使用的结构,如大小 )有用的..有趣的问题没有? 🙂 这里是: where T : struct 取自MSDN 。 […]
我怎样才能把一个Java对象转换成一个布尔原语 我尝试像下面,但它不工作 boolean di = new Boolean(someObject).booleanValue(); 构造函数Boolean(Object)是未定义的 请指教。
我需要在Java中进行一些reflection方法调用。 这些调用将包括具有基本types(int,double等)参数的方法。 在查找方法时,指定这种types的方法是int.class,double.class等。 我面临的挑战是我接受来自外部来源的input,将dynamic地指定types。 因此,我也需要dynamic地创build这些类引用。 设想一个分隔文件的方法名称列表,其中包含参数types列表: doSomething int double doSomethingElse java.lang.String boolean 如果input类似java.lang.String ,我知道我可以使用Class.forName("java.lang.String")到该类实例。 有什么方法可以使用该方法或其他方法来获取原始types类? 编辑:感谢所有的受访者。 看起来很清楚,没有内build的方法来干净地做我想做的事情,所以我将决定重用Spring框架中的ClassUtils类。 它似乎包含一个替代Class.forName(),将符合我的要求。
有相关的问题,比如我如何将2个parameter passing给一个AsyncTask类? ,但我碰到了徒劳地试图将多个原语作为parameter passing给AsyncTask的困难,所以我想分享我发现的东西。 这个微妙的东西在现有的问题和答案中并没有被体现出来,所以我想帮助那些和我一样遇到同样问题的人,并帮他们解决痛苦。 问题是这样的:我有多个原始参数(例如两个长),我想传递给一个AsyncTask在后台执行 – 怎么可以做? (我的答案…经过一段时间的努力…可以在下面find。)
我有一个类,我想用来存储“属性”为另一个类。 这些属性只是一个名称和一个值。 理想情况下,我希望能够添加types属性,以便返回的“值”始终是我希望的types。 types应该始终是一个原始的。 这个类inheritance了一个抽象类,它基本上把string的名字和值存储起来。 这个想法是,这个子类将添加一些types安全的基类(以及节省我的一些转换)。 所以,我创build了一个类(大致)这个: public class TypedProperty<DataType> : Property { public DataType TypedValue { get { // Having problems here! } set { base.Value = value.ToString();} } } 所以问题是: 有一种“通用”的方式来从string转换回原始? 我似乎无法find任何通用的接口来连接整个板上的转换(像ITryParsable这样的理想!)。
我有一个关于Java中的shorttypes的问题。 我正在使用JDK 1.6。 如果我有以下情况: short a = 2; short b = 3; short c = a + b; 编译器不想编译 – 它说“它不能从int转换为short”,并build议我把一个expression式转换为short ,所以这个: short c = (short) (a + b); 真的有用。 但我的问题是为什么我需要施放? a和b的值在short的范围内 – 短值的范围是{-32,768,32767}。 当我想要执行操作时,我也需要投射 – ,*,/(我没有检查过其他人)。 如果我对原始typesint做同样的操作,我不需要将aa + bb转换为int 。 以下工作正常: int aa = 2; int bb = 3; int cc = aa +bb; […]